windll c_int python ctypes

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