2009-09-04 150 views
0

我有函数原型这里:如何使用ctypes包装这个具有多个参数的C函数?

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

我需要写一些Python来访问该功能是在DLL中。 我已经加载了DLL,但是 每个double *实际上都指向了一个可变数量的double(一个数组),并且 我很难让它正常工作。

谢谢大家!

回答

1

为了与,比如说,n双打的数组:

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

,并通过x到您的函数,其中就是了double*。或者,如果你需要初始化x因为你把它:

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

等。您可以循环使用x,对其进行索引,依此类推。

+0

太棒了!谢谢! – trayres 2009-09-04 22:42:40

+0

不客气,如果这个答案被证明是解决您的问题的方法,请记住接受它(使用放弃/拒绝答案的号码下的复选标记图标作为答案),这是基本的SO礼仪。 – 2009-09-05 00:49:40

+0

啊,再次感谢你! – trayres 2009-09-08 22:52:37

1

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

相关问题