草庐IT

ctype_digit

全部标签

python - ctypes 中的结构内联合语法

关于ctypes语法的快速问题,因为Unions的文档对于像我这样的初学者来说并不清楚。假设我想实现一个INPUT结构(参见here):typedefstructtagINPUT{DWORDtype;union{MOUSEINPUTmi;KEYBDINPUTki;HARDWAREINPUThi;};}INPUT,*PINPUT;我应该还是需要更改以下代码?classINPUTTYPE(Union):_fields_=[("mi",MOUSEINPUT),("ki",KEYBDINPUT),("hi",HARDWAREINPUT)]classINPUT(Structure):_field

python - 在 python 中使用 ctypes 方法会产生意外错误

我对python和ctypes还很陌生。我正在尝试完成一项看似简单的任务,但却得到了意想不到的结果。我正在尝试将字符串传递给c函数,因此我使用的是c_char_p类型,但它给了我一条错误消息。简而言之,这就是正在发生的事情:>>>fromctypesimport*>>>c_char_p("helloworld")Traceback(mostrecentcalllast):File"",line1,inTypeError:stringorintegeraddressexpectedinsteadofstrinstance这是怎么回事? 最佳答案

python - 获取 ctypes 指针指向的内存地址

简短版:如何获取ctypes指针指向的地址?长版:我已经将python函数注册为C库的回调。C库需要void(*p_func)(charstat,char*buf,shortbuf_len)的函数签名,因此我注册了一个适当的python函数。进入python函数后,想知道buf指向的内存地址。我该怎么做? 最佳答案 我已经通过阅读文档自行解决了这个问题。我想知道库分配的内存块的内存位置。我有指向所述block的ctypes指针。为了获取block的内存地址,我使用了ctypes.addressof(p_block.contents)

python - 在 Python 中将字符串转换为 ctypes.c_ubyte 数组的有效方法

我有一个20字节的字符串,我想将它转换为ctypes.c_ubyte数组以进行位域操作。importctypesstr_bytes='01234567890123456789'byte_arr=bytearray(str_bytes)raw_bytes=(ctypes.c_ubyte*20)(*(byte_arr))有没有办法为了转换而避免从str到bytearray的深拷贝?或者,是否可以在没有深拷贝的情况下将字符串转换为字节数组?(使用像memoryview这样的技术?)我正在使用Python2.7。性能结果:根据eryksun和BrianLarsen的建议,这里是vboxVM下使

python - 使用 python-ctypes 将 fortran 与 python 接口(interface)

经历:fortran大约3个月python-中级:在此之前从未在python中使用过ctypes模块我一直在寻找一种方法来使用fortran代码来完成我在python方面的博士工作——随后使用matplotlib进行可视化的动态计算。THISPOST帮助(这表明可以使用ctypes模块在python中使用/调用fortran代码-并且考虑到fortran函数具有绑定(bind)到它们的备用名称-这在逻辑上对我来说很有意义,尽管我不知道它是如何工作的细节。但我们确实明智地选择了我们的战斗!)。那么thisSOpost也处理从python调用fortran函数。下一个合乎逻辑的步骤是查找d

python ctype递归结构

我用C为驱动程序开发了一个DLL。我用C++编写了一个测试程序,DLL工作正常。现在我想使用Python与这个DLL进行交互。我已经成功地隐藏了大部分用户定义的C结构,但有一点我必须使用C结构。我是python的新手,所以我可能会出错。我的方法是使用ctype在python中重新定义一些结构,然后将变量传递给我的DLL。但是在这些类中,我有一个自定义链表,其中包含如下递归类型classEthercatDatagram(Structure):_fields_=[("header",EthercatDatagramHeader),("packet_data_length",c_int),(

c++ - Ctypes 在使用 CMake 创建的共享库中找不到符号

我在linux中创建共享库的CMake设置类似于SET(CMAKE_CXX_FLAGS"-fPIC")SET(LIB_UTILS_SRCUtils.cpp)ADD_LIBRARY(UTILSSHARED${LIB_UTILS_SRC})来源Utils.cppdoubleaddTwoNumber(doublex,doubley){returnx+y;}当尝试使用CTypes访问“addTwoNumber”函数时importosimportctypesasclibPath='/home/AP/workspace/LearningCPP/lib/libUTILS.so'libUTILS=c.

python ctypes结构数组

我有以下代码,但最终会出现段错误。importctypesfromrandomimportrandintclassSTRUCT_2(ctypes.Structure):#_pack_=2_fields_=[('field_1',ctypes.c_short),('field_2',ctypes.c_short),('field_3',ctypes.c_short)]classSTRUCT_1(ctypes.Structure):#_pack_=2_fields_=[('elements',ctypes.c_short),('STRUCT_ARRAY',ctypes.POINTER(ST

Python 使用 ctypes 传递 char * 数组并填充结果

我正在尝试使用ctypes在python中创建一个char*数组,以将其传递给用于填充字符串的库。我希望返回的4个字符串每个长度不超过7个字符。我的代码是这样的测试库.pyfromctypesimport*primesmile=CDLL("/primesmile/lib.so")getAllNodeNames=primesmile.getAllNodeNamesgetAllNodeNames.argtypes=[POINTER(c_char_p)]results=(c_char_p*4)(addressof(create_string_buffer(7)))err=getAllNode

python - 使用 ctypes 进行标准输出重定向

我正在尝试将printf函数的输出重定向到Windows上的一个文件。我在python3中使用ctypes来调用函数。我的代码是:importos,sysfromctypesimport*if__name__=='__main__':print("begin")saved_stdout=os.dup(1)test_file=open("TEST.TXT","w")os.dup2(test_file.fileno(),1)test_file.close()print("pythonprint")cdll.msvcrt.printf(b"Printffunction1\n")cdll.ms