[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