2009-09-04 140 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屬性,該屬性應該包含一個指向數據的指針。

相關問題