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

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


dir() mi vypíše tohle:

['__call__', '__class__', '__ctypes_from_outparam__', '__delattr__', 
'__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', 
'__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', 
'__repr__', '__setattr__', '__str__', '__weakref__', '_b_base_', 
'_b_needsfree_', '_flags_', '_objects', '_restype_', 'argtypes', 
'errcheck', 'restype']

Ostatně, lepší příklad na vyzkoušení než ten, který jsem prve napsal je

lib = CDLL('libc.so.6')

a jak teď třeba získat hodnotu errno?

 >>> lib.errno
<_FuncPtr object at 0xb7f667e4>

--
Jan Martinek

rajcze wrote:
> Ahoj,
> 
> co ti vrati vypis
> 
>>>> dir(lib.a)
> 
> ?
> 
> On 7/23/07, Jan Martinek <honza na dp.fce.vutbr.cz> 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