문제
int 값을 매핑하고 싶습니다 pbs_errno
도서관에서 글로벌로 선언되었습니다 libtorque.so
CTypes 사용.
현재 라이브러리를로드 할 수 있습니다.
from ctypes import *
libtorque = CDLL("libtorque.so")
그리고 많은 기능을 성공적으로 매핑했습니다. 그러나 오류 확인 목적으로 많은 사람들이 pbs_errno
변수이므로 액세스 할 수 있습니다. 그러나 접근하려고하면 다음과 같이받습니다.
>>> pytorque.libtorque.pbs_errno
<_FuncPtr object at 0x9fc690>
물론, 그것은 함수 포인터가 아니며 그것을 호출하려고 시도하면 Seg 결함이 발생합니다.
그것은 다음과 같이 선언됩니다 int pbs_errno;
메인 헤더에서 extern int pbs_errno;
API 헤더 파일에서.
objdump는 기호를 다음과 같이 표시합니다.
00000000001294f8 g DO .bss 0000000000000004 Base pbs_errno
해결책
CTYPES 문서에는 DLLS로 내보내는 값에 대한 액세스에 대한 섹션이 있습니다.
http://docs.python.org/library/ctypes.html#accessing-values-exported-from-dlls
예를 들어
def pbs_errno(): return c_int.in_dll(libtorque, "pbs_errno")
제휴하지 않습니다 StackOverflow