Python から DLL で定義されている関数を使用したいと考えています。C++ 関数 (get_version) から返される値は構造体です。
typedef struct myStruct {
size_t size;
char * buff;
} myStruct ;
Python コードは次のとおりです。
lib = CDLL(myDLL.dll)
lib.get_version
問題は、返された値をどのように処理するかです。
Voo's answer を読み、他の投稿を読みましたが、まだこれに苦労しています
私は構造体クラス(Foo、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_
次のエラー TypeError: restype must be a type, a callable, or None が表示されます
私はこれについて読んで、restype
notをリストとして設定すると、たとえばc_char_p、エラーは表示されません
私が設定したときrestype
lib.restype = Foo. 田畑
エラーは表示されませんが、restype
forget_version
が正しく設定されていません デバッグで変数を見ると、次のようになります。
lib.restype = list: [('size', ), ('buff', )]
lib.get_version.restype = PyCSimpleType:
どんな助けでもいただければ幸いです