我想使用ctypes映射在库libtorque.so
中声明为全局的int值pbs_errno
。使用ctypes映射来自共享库的全局变量
目前我可以加载库,像这样:
from ctypes import *
libtorque = CDLL("libtorque.so")
,并已成功绘制了一堆的功能。但是,出于错误检查的目的,他们中的很多人都设置了pbs_errno
变量,所以我也需要访问该变量。但是,如果我尝试访问它,我得到:
>>> pytorque.libtorque.pbs_errno
<_FuncPtr object at 0x9fc690>
当然,它不是一个函数指针,并试图把它导致赛格故障。
在主标题中声明为int pbs_errno;
,在API头文件中声明为extern int pbs_errno;
。
objdump显示符号为:
00000000001294f8 g DO .bss 0000000000000004 Base pbs_errno
John的回答是正确的。设置restype只会改变函数的返回类型AFAICT。如果我真的试图将pbs_errno作为函数调用,则会导致段错误。 – 2009-02-13 16:10:42