ctypes を使用して Python から C DLL を呼び出しています。ほとんどの機能について、すべて正常に動作しています。しかし...今、入力に16進定数を必要とする関数があり、それを正しく渡すことができないようです。
私はCソースを持っていませんが、ドキュメントから、関数定義は次のようになります:
sensv_bn* NewSensvToFinding_bn (const node_bn* Qnode, const nodelist_bn* Vnodes, int what_find)
それらはDLL内の他の関数によって作成されているため、私は合格Qnode
しVnodes
ていて適切であるとほぼ確信しています。問題は、int
呼び出されwhat_find
た .
DLL に付属するヘッダー ファイルから、次の行が表示されます。
enum {ENTROPY_SENSV = 0x02, REAL_SENSV = 0x04, VARIANCE_SENSV = 0x100, VARIANCE_OF_REAL_SENSV = 0x104}; /* for NewSensvToFinding_bn */
私が渡そうとしてwhat_find
いる値は、その値がVARIANCE_OF_REAL_SENSV
16 進値0x104
です。
これを変換せずに渡し、int としてキャストしようとしましctypes.c_int(0x104)
たが、関数はポインターではなく 0 を返します。同じ結果で、変換せずに渡すことも試みました。
私が実行すべきより適切な変換はありますか? 私は少しC n00bなので、これが本当に素朴な質問であれば申し訳ありません.