Calling a shared library using C types
Nathan Harmston
iwanttobeabadger at googlemail.com
Mon Mar 24 18:56:08 EDT 2008
Hi,
I know this is a pretty simple question but I've spent a while on this and
can't see whats wrong. I'm trying to access a shared library which I've
created called Simulation.so, its created as such (snip from makefile):
all: simulation
simulation: Simulation.so
Simulation.so: Simulation.o Statistics.o
gcc -shared Simulation.o Statistics.o -L/usr/local/lib -lsbml
-lstdc++ -lm -o Simulation.so
Statistics.o: Statistics.c Statistics.h
gcc -fpic -g -O2 -I/usr/include -c Statistics.c
Simulation.o: Simulation.c
gcc -fpic -g -O2 -I/usr/include -c Simulation.c
and I can load it properly in python
import ctypes
t = ctypes.CDLL('./Simulation.so')
this works fine, I have a simple function I ve put in for testing which just
returns the integer 4. However when I try to access this function it doesnt
work
t.test()
File "<stdin>", line 1, in <module>
File
"/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/ctypes/__init__.py",
line 325, in __getattr__
func = self.__getitem__(name)
File
"/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/ctypes/__init__.py",
line 330, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: dlsym(0x81e6b0, test): symbol not found
I've tried using
t.__getattr__("test")
but still have the same exception, I've tried loading the library with mode
= RTLD_GLOBAL aswell and still have no luck. As far I as I can see this
should work? But as I am just starting with ctypes I am sure I doing
something sorry very stupid.
Any pointers would be greatly appreciated,
Many thanks in advance,
Nathan
Im hoping python-list is ok for questions regarding ctypes :S
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20080324/35ec7cc1/attachment.html>
More information about the Python-list
mailing list