我想映射声明为在使用的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

e.g。

def pbs_errno():
    return c_int.in_dll(libtorque, "pbs_errno")
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top