我嘗試使用Ctypes將C結構轉換爲Python。Python結構
我想轉換的結構是:
typedef struct LibraryInfo
{
uint32_t size; // Size of the structure
char libName[MAX_LIBRARY_NAME+1]; // Library name
char provider[MAX_LIBRARY_PROVIDER_NAME+1]; // Provider
uint32_t version; // Library version, i.e: 0x01030005 --> v.01.03.0005
} LibraryInfo;
等效Python代碼是:
class LibraryInfo(Structure):
_fields_=[("size",c_uint),
("libName",c_char * MAX_LIBRARY_NAME),
("provider",c_char * MAX_LIBRARY_PROVIDER_NAME),
("version",c_uint)]
這需要這種結構的說法是resCode = QueryLibraryInfo(&libraryInfo);
錯誤我的功能我得到的是invalid parameters passed
。 這是一個庫函數調用。我使用python HPDRLGL_MAX_LIBRARY_NAME = 200 HPDRLGL_MAX_LIBRARY_PROVIDER_NAME = 200類HPDRLGL_LibraryInfo(結構):字段 = [(「size」,c_uint),(「libName」,c_char *(HPDRLGL_MAX_LIBRARY_NAME + 1)),(「provider」 ,c_char *(HPDRLGL_MAX_LIBRARY_PROVIDER_NAME + 1)),(「version」,c_uint)]我仍然遇到同樣的錯誤,無效參數。正如你所說,我已經傳遞了一個指向結構的指針。
爲什麼你會忽略'+ 1'? – kennytm 2011-04-05 07:13:17
這不是一個問題。我已經作出的大小相同C. – 2011-04-05 07:17:39