如何用ctypes包装带有多个参数的C函数?

时间:2009-09-04 19:08:26

标签: python arrays pointers return ctypes

我在这里有函数原型:

extern "C" void __stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*);

我需要编写一些python来访问DLL中的这个函数。 我加载了DLL,但是 每个double *实际上指向可变数量的双精度数(一个数组),和 我无法让它正常运行。

全部谢谢!

2 个答案:

答案 0 :(得分:1)

我没有太多关注ctypes,但尝试使用正确类型的numpy数组。如果这不仅仅是自动工作,它们还有一个ctypes属性,该属性应包含指向数据的指针。

答案 1 :(得分:1)

使用n双打来制作数组:

arr7 = ctypes.c_double * `n` 
x = arr7()

并将x传递给您想要double*的函数。或者,如果您需要初始化x

x = arr7(i*0.1 for i in xrange(7))

之类的。您可以遍历x,对其进行索引,依此类推。