如何将SwigPyObject转换为ctypes void*

2024-09-24 02:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python,ctypes包装了一个C API函数,它为类X取一个void*参数,例如。 C:

myFunc(void* aXHandle); //where X is a class, of class X.

对于X类,我可以访问swigged API并可以获得我的。这个,其类型为SwigPyObject。在

如何强制转换它,以便可以使用ctypes并使用ctypes C\u void\u p作为参数调用我的C-API函数? 在Python中,我想的是: 轴对象此=我的。这个在

^{pr2}$

但这不起作用;得到“参数1中的错误类型”


Tags: of对象函数api类型参数ismyfunc
1条回答
网友
1楼 · 发布于 2024-09-24 02:17:15

SwigPyObject__int__方法由pyrun.swg中定义的SwigPyObject_long处理。它返回PyLong_FromVoidPtr(v->ptr),因此您应该能够使用以下命令:

myHandle = c_void_p(int(myX.this))

ctypes更方便地查找_as_parameter_属性。可以在实例上或将其设置为属性:

^{pr2}$

简单的调用myFunc(myX)。在

相关问题 更多 >