ctypes参考双点

2024-09-27 21:34:43 发布

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

我有一个C函数,doxygen是这样的:

long function( classA * obj1,
               classB * obj2,
               classC ** obj3,
               long value,
               const char * name1,
               const char * name2,
               classD ** obj4,
               classD ** obj5,
               classD ** obj6 
               )    

我需要从python调用它并获取最后3个参数以传递给另一个dll。目前我可以很好地调用DLL,但如果我试图将最后3个参数传递给另一个函数,则会出现如下错误:

^{pr2}$

我可能在ctypes方面做了一些错误的事情,我会很感激关于如何使用它的一些光。。。在

第二个DLL如下所示:

int function2(ClassD *  obj4)   

现在,我把最后三个论点“组合”成这样:

  temp=ctypes.c_long*1
  obj = temp(0)

还有,从ctypes到swig有什么办法吗?显然我可以用另一种方法来使用long函数。在


Tags: 函数错误functionctypestemplongdlldoxygen
1条回答
网友
1楼 · 发布于 2024-09-27 21:34:43

我不得不做了一些额外的挖掘来弄清楚C-types是如何工作的,下面这些似乎是可行的。对于需要创建数组的函数:

arg = (ctypes.POINTER(ctypes.c_double) * 1)()

并通过引用函数传递它:

^{pr2}$

对于第二个函数,我只传递我创建的数组的一个元素:

arg[0]

相关问题 更多 >

    热门问题