【python使用ctypes调用扩展模块的实例方法】教程文章相关的互联网学习教程文章

预期的LP_c_double实例而不是c_double_Array-python ctypes错误【代码】

我在DLL中有一个必须用python代码包装的函数.该函数期望指向双精度数组的指针.这是我得到的错误:Traceback (most recent call last):File "C:\....\.FROGmoduleTEST.py", line 243, in <module>FROGPCGPMonitorDLL.ReturnPulse(ptrpulse, ptrtdl, ptrtdP,ptrfdl,ptrfdP) ArgumentError: argument 1: <type 'exceptions.TypeError'>: expected LP_c_double instance instead of c_double_Array_0_Array_2我试图像这样铸造它:ptrpu...

使用kivy和pywinauto时的python-ctypes.ArgumentError【代码】

我有一个kivy应用程序,可以使用pywinauto模块与其他窗口进行交互.该应用程序在Linux中运行良好(不使用pywinauto)但在Windows中我收到以下错误,应用程序甚至不会启动:C:\Program Files (x86)\Python36_64\lib\site-packages\pywinauto\__init__.py:80: UserWarning: Revert to STA COM threading modewarnings.warn("Revert to STA COM threading mode", UserWarning) [INFO ] [GL ] NPOT texture support is available...

python – ctypes – 没有形状的numpy数组?【代码】

我使用python包装器来调用c dll库的函数.一个ctype由dll库返回,我将其转换为numpy数组score = np.ctypeslib.as_array(score,1) 但阵列没有形状?score >>> array(-0.019486344729027664)score.shape >>> ()score[0] >>> IndexError: too many indices for array如何从乐谱数组中提取双精度? 谢谢.解决方法:您可以通过索引[()]访问0维数组中的数据. 例如,score [()]将检索数组中的基础数据. 这个成语实际上是一致的:# x, y, z are...

使用ctypes在Python中使用Rust返回的数组【代码】

我有一个Rust函数返回一个数组,我想在Python中使用这个数组,它可能是一个列表或numpy.array它并不重要. 我的Rust功能如下所示:#[no_mangle] pub extern fn make_array() -> [i32; 4] {let my_array: [i32; 4] = [1,2,3,4];return my_array; }我试图用Python调用它:In [20]: import ctypesIn [21]: from ctypes import cdllIn [22]: lib = cdll.LoadLibrary("/home/user/RustStuff/embed/target/release/libembed.so")In [23]: li...

python – 静态库的ctypes?

我正在尝试为poker-eval编写一个Python包装器,这是一个静态库.我在ctypes上找到的所有文档都表明它适用于共享/动态库.是否有静态库的ctypes? 我知道cython,但是我应该使用它还是将poker-eval重新编译成动态库,以便我可以使用ctypes? 谢谢, 麦克风解决方法:选择取决于你.如果你能够将库重新编译为共享对象,我建议,因为它将最小化你必须维护的非python代码.否则,您将需要构建一个链接到静态库并包装它公开的函数的python扩展模块. ...

使用python ctypes和libc将void指针写入二进制文件【代码】

我使用python ctypes和libc与供应商提供的DLL文件进行交互. DLL文件的目的是从相机获取图像. 图像采集似乎没有错误地运行;我遇到的问题是访问数据. 图像采集功能将ctypes.c_void_p作为图像数据的参数. 简化如下:""" typedef struct AvailableData {void* initial_readout;int64 readout_count; } imageData; """class AvailableData(ctypes.Structure):_fields_ = [("initial_readout", ctypes.c_void_p), ("readout_count", ctyp...

Python:转换字符串以用于ctypes.c_void_p()【代码】

给一个字符串:msg="hello world"如何将其定义为ctypes.c_void_p()数据类型? 以下代码产生“无法转换为指针”异常:data=ctypes.c_void_p(msg)数据必须是C中的void *类型,因为它被传递给DLL. 我假设有一种方法可以使用struct包打包/解压缩字符串,但不幸的是我对这个过程非常不熟悉.解决方法:像这样的东西?使用ctypes.cast?>>> import ctypes >>> p1= ctypes.c_char_p("hi mom") >>> ctypes.cast( p1, ctypes.c_void_p ) c_void_...

python – 在ctypes中LP_ *指针和* _p指针之间有什么区别? (与结构的奇怪交互)【代码】

我无法理解Python ctypes中LP_ *(例如LP_c_char)和* _p(例如c_char_p)指针之间的区别.有文件区分它们吗? 我读到的关于* _p指针的一点点表明它们更好(以某种未指明的方式),但是当我尝试将它们用作结构域时,我会得到奇怪的行为.例如,我可以使用LP_c_char指针字段创建一个结构:import ctypes char = ctypes.c_char('a') class LP_Struct(ctypes.Structure):_fields_ = [('ptr', ctypes.POINTER(ctypes.c_char))]struct = LP_Struct(...

python – 使用ctypes数组作为numpy数组时的PEP 3118警告【代码】

当我尝试将ctypes数组用作numpy数组时,我收到以下警告消息:Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import ctypes, numpy >>> TenByteBuffer = ctypes.c_ubyte * 10 >>> a = TenByteBuffer() >>> b = numpy.ctypeslib.as_array(a) C:\Python27\lib\site-packages\numpy\ctypeslib.py:402: RuntimeW...

Python对象作为ctypes回调函数中的userdata【代码】

C函数myfunc对更大的数据块进行操作.结果以块的形式返回给回调函数:int myfunc(const char *data, int (*callback)(char *result, void *userdata), void *userdata);使用ctypes,从Python代码调用myfunc并将结果返回给Python回调函数没什么大不了的.这个回调工作正常.myfunc = mylib.myfunc myfunc.restype = c_int myfuncFUNCTYPE = CFUNCTYPE(STRING, c_void_p) myfunc.argtypes = [POINTER(c_char), callbackFUNCTYPE, c_void_...

如何使用malloc和free与python ctypes?【代码】

我在我的C库中有一个函数,比如runsim(),它将指向struct repdata的指针作为参数之一,其中struct repdata由struct repdata {int *var1;int *var2;int *var3;char *var4;double *var5;double *var6;int *var7; };当独占使用C时,我初始化一个调用该函数的struct repdata类型的变量,struct repdata data; void create_data_container(struct repdata *data, int len_data) {data -> var1 = malloc( sizeof(int) * len_data );data -> va...

使用ctypes将python对象作为参数传递给C/C++函数【代码】

我有一个带有PyObject作为参数的函数的DLL就像是void MyFunction(PyObject* obj) {PyObject *func, *res, *test;//function getAddress of python objectfunc = PyObject_GetAttrString(obj, "getAddress");res = PyObject_CallFunction(func, NULL);cout << "Address: " << PyString_AsString( PyObject_Str(res) ) << endl; }我想使用ctypes从python中调用dll中的这个函数 我的python代码看起来像import ctypes as cpath = "h:\l...

通过Ctypes将C转换为Python – 将函数指针的结构包含到静态函数中【代码】

我在C库中的结构是这样的.DataFn中的函数指针指向静态函数. .Hstruct Data {int i;int *array; };typedef struct {bool (* const fn1) (struct Data*, const char *source);.... } DataFn; extern DataFn const DATAFUNC使用objdump,该表仅包含DATAFUNC和gcc中的一些其他内容. 这在C中很好,其中调用fn1就像DATAFUNC.fn1(…,…),但是这样的东西怎么会被包裹起来所以fn1可以用python w / ctypes调用? 示例pythonlibc = ctypes.cdll....

Python:简单的ctypes dll加载产生错误【代码】

我从MSDN DLL example创建了MathFuncsDll.dll并运行调用.cpp工作正常.现在,尝试使用类似ctypes在IPython中加载它import ctypes lib = ctypes.WinDLL('MathFuncsDll.dll')在正确的文件夹中产生UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 28: ordinal not in range(128)类似地在Python shell中产生WindowsError: [Error 193] %1 is not a valid Win32 application我应该改变什么?嗯,它可能是Win 7 64位...

python – 从mod_wsgi django应用程序导入numpy的偶然ctypes错误【代码】

这是设置: >导入ctypes的mod_wsgi上的Django(1.2)应用程序> Python 2.6.5> Apache 2.2.3> SELinux禁用> RedHat EL 5 64位>某些文件系统挂载在nfs上 偶尔,当我重新启动apache时,我在尝试导入ctypes时遇到导入错误.每个传入的请求都会因500错误而失败.如果我重新启动apache通常一切都会重新开始工作. 这是错误的堆栈跟踪:Traceback (most recent call last):File "/home/appfirst/django/django/core/handlers/base.py", line 80, ...

实例 - 相关标签