0
我在一個DLL中通過ctypes調用回一個Python函數中有一個C函數。將數據添加到傳遞給Python Ctypes回調的C緩衝區
C函數調用用以下原型函數:
void GetData(u8 Buffer[], u16 Length);
注意,緩衝器指向其在DLL保持的靜態數據數組。
我產生了這樣的Python函數類型如下:
CFUNCTYPE(None, c_char_p, c_int)
而且我的Python回調函數被調用,沒有任何明顯的問題。
我的問題是,我無法弄清楚如何讓ctypes將原始數據添加到Python外部的緩衝區。有沒有辦法來定義一個ctypes字符串緩衝區並給它的DLL緩衝區的地址?
謝謝您的回答 - 你真的指着我沿着正確的線: - 我發現ctypes的有它包裝的memcpy一個的memmove功能 - 所以我沒有需要進口的libc。我唯一需要做的另一件事是聲明我的函數類型爲CFUNCTYPE(無,POINTER(c_char),c_int)而不是CFUNCTYPE(無,c_char_p,c_int) 。 – 2012-02-10 09:40:14