link("parameters", &connection);
文字列パラメーターを受け取り、接続を初期化するDLL (C 言語) の関数があります。
の呼び出しで初期化されたオブジェクトconnect(connection)
である関数があります。 connection
link()
Python 接続オブジェクトを関数connect()
に引数として渡します
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))
...
しかし、'connection' オブジェクトを mydll ライブラリの他の関数に転送すると、関数は値を返しますが、その値は正しくありません。
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))
この例result=0
では、このコードの C バリアントでは、正しい値 (0 ではない) を受け取ります。
なんで?