我想使用一個函數,它是從Python的DLL中定義的。 從C++函數(get_version)返回的值是一個結構處理從C++返回的結構python調用
typedef struct myStruct {
size_t size;
char * buff;
} myStruct ;
的Python代碼是:
lib = CDLL(myDLL.dll)
lib.get_version
的問題是如何處理返回的值?
我讀過VOO的答案和閱讀其他職位,但我仍然有這個
掙扎我聲明瞭結構類(美孚,從VOO的答案),並設置restype
代碼現在看起來
class Foo(Structure):
_fields_ = [('size', c_size_t), ('buff', c_char_p)]
lib = CDLL(myDLL.dll)
lib.get_version
lib.get_version.restype = Foo._fields_
我收到以下錯誤 類型錯誤:restype必須是一個類型,可調用,或無
我讀到這個第二,如果我設置restype
不是作爲一個列表,例如:c_char_p,誤差不出現
當我設置了restype
lib.restype =富。 領域
錯誤不再出現,但在restype
爲get_version
設置不正確 當尋找在調試中的變量:
lib.restype =列表:[( '大小',),( '迷',)]
lib.get_version.restype = PyCSimpleType:
任何幫助,將不勝感激
'ctypes'與C函數一起工作,所以如果使用C++,請確保'extern「C」'函數。 –
嗨,你能告訴我什麼是函數的返回類型在DLL中? 我試過用我的myStruct,但得到錯誤:'C連接函數不能返回C++類'myStruct'' – Aleksandar