質問
私はctypesのを使用して、ライブラリpbs_errno
でグローバルとして宣言int型の値libtorque.so
をマッピングしたいと思います。
現在、私はそうのようなライブラリをロードすることができます:
from ctypes import *
libtorque = CDLL("libtorque.so")
と、正常な機能の束をマッピングしました。私もそれにアクセスする必要があるのでしかし、エラーチェックの目的のためにそれらの多くはpbs_errno
変数を設定します。しかし、私はそれにアクセスしようとする場合、私は取得ます:
>>> pytorque.libtorque.pbs_errno
<_FuncPtr object at 0x9fc690>
もちろん、それは関数ポインタではありません、それはワンセグ障害になり呼び出そうとします。
これは、APIヘッダファイル内のメインヘッダーとint pbs_errno;
にextern int pbs_errno;
として宣言されます。
はobjdumpのように記号を示し
00000000001294f8 g DO .bss 0000000000000004 Base pbs_errno
解決
のDLLでエクスポート値へのアクセスについてのctypesのドキュメント内のセクションがあります
http://docs.python.org/ライブラリ/ ctypes.html#のアクセス-値はエクスポート-から-のdllする
例えばます。
def pbs_errno(): return c_int.in_dll(libtorque, "pbs_errno")
所属していません StackOverflow