我想使用ctypes 映射pbs_errno
在库中声明为全局的int值libtorque.so
.
目前我可以这样加载库:
from ctypes import *
libtorque = CDLL("libtorque.so")
Run Code Online (Sandbox Code Playgroud)
并成功映射了一堆函数.但是,出于错误检查的目的,其中许多设置pbs_errno
变量,所以我也需要访问它.但是,如果我尝试访问它,我得到:
>>> pytorque.libtorque.pbs_errno
<_FuncPtr object at 0x9fc690>
Run Code Online (Sandbox Code Playgroud)
当然,它不是一个函数指针,试图调用它会导致seg错误.
它int pbs_errno;
在主头文件和extern int pbs_errno;
API头文件中声明.
Objdump将符号显示为:
00000000001294f8 g DO .bss 0000000000000004 Base pbs_errno
Run Code Online (Sandbox Code Playgroud)
Joh*_*ery 18
ctypes文档中有一节关于访问dll中导出的值:
http://docs.python.org/library/ctypes.html#accessing-values-exported-from-dlls
例如
def pbs_errno(): return c_int.in_dll(libtorque, "pbs_errno")