1
DLL(C言語)link("parameters", &connection);
の関数は、文字列パラメータを受け取り、接続を初期化します。関数の引数としてオブジェクトを渡す
があります。は、link()
を呼び出して初期化されたオブジェクトです。
私は、引数
connection_t = ctypes.c_uint32
link = mydll.link
link.argtypes=(ctypes.c_char_p, ctypes.POINTER(connection_t))
connect = mydll.connect
connect.argtypes=(connection_t,)
...
connection = connection_t()
link ("localhost: 5412", ctypes.byref(connection))
...
として機能connect()
にPythonの接続オブジェクトを渡ししかし、私はMYDLLライブラリの他の関数に「接続」オブジェクトを転送する場合、関数は値を返しますが、値が正しくありません。この例ではresult=0
func=mydll.func
status_t=ctypes.c_uint32
status=status_t()
func.argtypes=(ctypes.c_ulong,ctypes.POINTER(status_t))
result=func(connection, ctypes.byref(status))
が、このコードのC-変異体でIは正しい値(0でない)
なぜを受信? C APIを記述したあなたのコメントに基づいて
はあなたが探している必要がありよろしいです「結果」ではなく「ステータス」で? – yak
'connection_t'は' ctypes.c_uint32'ですが、最初の 'func.argtypes'は' ctypes.c_ulong'ですか? – martineau
yak、申し訳ありませんが、私は 'ステータス'の値を意味します。しかし、 'status'が正しくない場合、 'result'の値も正しくありません。 – KLM