PythonからのDLL利用

Python3.9でsystemフォルダにあるDLL(API)を参照利用するプログラムを作っています。
DLL関数を呼び出す際に構造体を利用し、その中にデータを設定して渡すのですが
固定長文字列のため、どのように渡せばいいのかわかりません。
ご指導よろしくお願いいたします。

実現したいこと

DLL関数を呼出し、DLLの機能を稼働させたいです。

発生している問題・エラーメッセージ

構造体内部の固定長文字列 [c_wchar_p * 255]に文字を設定しようとすると例外が発生し、以下のエラーとなります。

<class 'TypeError'>:("'getset_descriptor' object is not callable",):'getset_descriptor' object is not callable

該当のソースコード

python3.9

import ctypes class N_Info(ctypes.Structure): _fields_ = [ ('iLineType',ctypes.c_uint32), ('FNumber',ctypes.c_wchar_p * 255 )]    :    :    : NUMBER_INFO = N_Info() NUMBER_INFO.iLineType = ctypes.c_uint32(1) NUMBER_INFO.FNumber= ctypes.c_wchar_p(u'01234567890') # ←例外発生場所 iapi = ctypes.WinDLL(r'Iapi64.dll') ret = iapi.IrIndiv(hnd, ctypes.pointer(NUMBER_INFO )

試したこと

直接設定しようとしたり、ポインタとして渡そうとしてもエラーが出てしまいます。

補足情報(FW/ツールのバージョンなど)

python3.9
anaconda3
pycharm利用
pythonを利用開始してから半年未満です。
ご指導よろしくお願いいたします。

追記

can110さんのご指摘もあり追記いたします。

DLL仕様書より

IrIndiv DLLの構造仕様は以下の通りです。 int WINAPI IrIndiv(    IN UINT_PTR hnd,              IN NUMBER_INFO *NN_Info, ); 構造体NUMBER_INFO の使用は以下の通りです。 typedef struct { int iLineType; char FNumber[255]; } NUMBER_INFO ;

コメントを投稿

0 コメント