如何用ctypes封装这个有多个参数的C函数?
我这里有一个函数的原型:
extern "C" void __stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*);
我需要写一些Python代码来访问这个在DLL里的函数。我已经加载了DLL,但每个double*实际上指向的是一个可变数量的double(也就是一个数组),我在让它正常工作上遇到了困难。
谢谢大家!
2 个回答
1
我对ctypes了解得不多,但你可以试试用合适类型的numpy数组。如果这样做不行,它们还有一个ctypes属性,里面应该有指向数据的指针。
1
如果你想创建一个包含 n
个双精度浮点数的数组,可以这样做:
arr7 = ctypes.c_double * `n`
x = arr7()
然后把 x
传递给你的函数,函数需要一个 double*
类型的参数。或者,如果你在创建 x
的时候需要初始化它,可以这样:
x = arr7(i*0.1 for i in xrange(7))
类似的,你可以对 x
进行循环,使用索引等操作。