ctypes

    3熱度

    1回答

    我正在編寫一些python代碼來與廣泛使用結構的C DLL進行交互。 其中一個結構包含嵌套結構。我知道這對ctypes模塊不是問題。問題是有一個經常使用的結構,在C中,它是通過宏定義的,因爲它包含一個可以變化的「靜態」長度數組。這是令人困惑所以這裏的一些代碼 struct VarHdr { int size; } #define VAR(size) \ struct Va

    5熱度

    4回答

    我想了解Python「ctypes」模塊。我已經將一個簡單的例子放在一起 - 理想情況下 - 包裝statvfs()函數調用。代碼如下所示: from ctypes import * class struct_statvfs (Structure): _fields_ = [ ('f_bsize', c_ulong), ('f_frsize', c_ulo

    8熱度

    1回答

    關於ctypes語法的快速問題,作爲聯盟的文檔對於像我這樣的初學者並不清楚。 說我要實現輸入結構(見here): typedef struct tagINPUT { DWORD type; union { MOUSEINPUT mi; KEYBDINPUT ki; HARDWAREINPUT hi; } ; } INPUT, *PINP

    1熱度

    1回答

    我在使用英特爾編譯器(11.1)構建ctypes工作版本時遇到了問題。麻煩的是,當與ctypes模塊接口連接時,ctypes模塊下的libffi不能正常工作。 OpenGL的。 本來libffi使用英特爾編譯器爲__int128_t沒有編譯沒有定義的,我身邊跟着的是已經上市的幾個地方,工作就是通過定義一個新的類型: typedef struct { int64_t m[2]; } __int128

    2熱度

    1回答

    我有一個字符串緩衝區:b = create_string_buffer(numb)其中numb是一個字節數。 在我的包裝,我需要拼接這個緩衝區。當調用期望一個POINTER(c_char)我可以做一個函數:myfunction(self, byref(b, offset))但在一個結構: class mystruct(Structure): _fields_ = [("buf", POI

    0熱度

    1回答

    我有C代碼,它使用變量data,這是一個用malloc創建的可變大小的大型二維數組。現在我必須編寫一個接口,以便可以在Python中調用C函數。我使用ctypes。 C代碼: FOO* pytrain(float **data){ FOO *foo = foo_autoTrain((float (*)[])data); return foo; } 與 FOO *foo_a

    19熱度

    1回答

    我有一個OpenCV項目混合Python和C.在更改爲OpenCV 2.1後,我對C代碼的調用不再工作,可能是因爲OpenCV不再使用SWIG綁定。 從Python的,我是用來調用具有以下原型C函數: int fast_support_transform(CvMat * I, CvMat * N,...); 現在,我得到以下錯誤: TypeError: in method 'fast_supp

    1熱度

    1回答

    我試圖將socket.inet_pton返回的16字節Blob數據轉換爲無符號字節的ctypes數組。我的數據結構是這樣的: class in6_addr(ctypes.Structure): _fields_ = (("Byte", ctypes.c_ubyte * 16),) 而且斑點就是: data = socket.inet_pton(socket.AF_INET6,

    0熱度

    1回答

    我需要將regexitem *正則表達式轉換爲ctype變量,任何想法? C函數預計FUNC(regexitem *正則表達式) char *regex1Groups[] = { "a","b","x","s" ,NULL}; char *regex2Groups[] = { "l" ,NULL}; regexitem regex[] = { {"bla", r

    1熱度

    1回答

    我有一個簡單的字節數組,我用x86程序填充。我需要在運行時執行。 """ Produces a simple callable procedure which returns a constant. """ from array import array simple = array('B') # mov rax, 0x10 simple.extend((0x81, 0xc