[python] ctypes, globální proměnná v knihovně

Jan Martinek honza na dp.fce.vutbr.cz
Pondělí Červenec 23 11:21:39 CEST 2007


Už asi vím. Tohle funguje:

 >>> from ctypes import *
 >>> lib = CDLL('./testlib.so')
 >>> c_int.in_dll(lib, 'a')
c_long(1243)
 >>> c_int.in_dll(lib, 'a').value = 5678
 >>> c_int.in_dll(lib, 'a')
c_long(5678)

--
Jan Martinek

Jan Martinek wrote:
> Ahoj,
> 
> mám soubor "testlib.c", který obsahuje jediný řádek, a to
> 
> int a = 1243;
> 
> Z toho udělám sdílenou knihovnu
> gcc -shared testlib.c -o testlib.so
> 
> natáhnu ji do pythonu pomocí ctypes
> 
>  >>> from ctypes import *
>  >>> lib = CDLL('./testlib.so')
>  >>> lib.a
> <_FuncPtr object at 0xb7f3d7e4>
> 
> což se zřejmě úspěšně podaří, ale vůbec netuším, jakým způsobem se 
> dostat k té hodnotě 1243. Nevíte to někdo?
> Když mám v té knihovně nějaké funkce, tak s jejich voláním nemám 
> problém, ale nevím, jakým způsobem přečíst a změnit globální proměnnou.
> 
> Díky
> Jan Martinek
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python


Další informace o konferenci Python