python - c_int - Asignando una variable global desde una biblioteca compartida con ctypes
c_int() (1)
Hay una sección en los documentos ctypes sobre el acceso a los valores exportados en dlls:
http://docs.python.org/library/ctypes.html#accessing-values-exported-from-dlls
p.ej
def pbs_errno(): return c_int.in_dll(libtorque, "pbs_errno")
Me gustaría asignar un valor int pbs_errno
declarado como global en la biblioteca libtorque.so
usando ctypes.
Actualmente puedo cargar la biblioteca de esta manera:
from ctypes import *
libtorque = CDLL("libtorque.so")
y han mapeado con éxito un montón de funciones. Sin embargo, para fines de comprobación de errores, muchos de ellos configuran la variable pbs_errno
, por lo que también necesito acceder a ella. Sin embargo, si intento acceder a él obtengo:
>>> pytorque.libtorque.pbs_errno
<_FuncPtr object at 0x9fc690>
Por supuesto, no es un puntero de función e intentar llamarlo da como resultado una falla seg.
Se declara como int pbs_errno;
en el encabezado principal y extern int pbs_errno;
en los archivos de encabezado de la API.
Objdump muestra el símbolo como:
00000000001294f8 g DO .bss 0000000000000004 Base pbs_errno