[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