C Bilbliotheken/Funktionen in Python verwenden?
lima-city → Forum → Programmiersprachen → C/C++ und D
attribut
beachten
bibliothek
code
datei
einbinden
einfachen import
falle
funktion
gleiche fehler
http
import
liegen
modul
muster
part
test
url
versuchen
verwenden
-
Mit dem Modul CTypes soll man in Python ja C Bibliotheken einbinden können. Aber wie mach ich das mit selbst geschriebenen Libs?
Z.B. wie verwende ich diesen Code, kompiliert zu einer .o Datei in Python?
int func() { return 1; } int main() { return 0; }
Mitcdll.LoadLibrary("/home/kristian/Desktop/test.o")
bekomm ich nur den Fehler:
OSError: /home/kristian/Desktop/test.o: cannot dynamically load executable
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Versuche mal einen einfachen import, das Bibliotheksmodul wird dann nur mit dem Dateinamen angegeben und muss natürlich im Modulsuchpfad liegen.
Im Falle von test.so also:
Aufgerufen werden die Funktionen dann wie Funktionen in ganz normalen Pythonmodulen auch nach dem Muster modul.attribut:import test
import test test.main()
Beitrag zuletzt geändert: 19.8.2010 11:00:57 von fatfox -
fatfox schrieb:
Versuche mal einen einfachen import, das Bibliotheksmodul wird dann nur mit dem Dateinamen angegeben und muss natürlich im Modulsuchpfad liegen.
Im Falle von test.so also:
Aufgerufen werden die Funktionen dann wie Funktionen in ganz normalen Pythonmodulen auch nach dem Muster modul.attribut:import test
import test test.main()
Der gleiche Fehler:
ImportError: ./test.so: cannot dynamically load executable
-
krisi12345 schrieb:
Z.B. wie verwende ich diesen Code, kompiliert zu einer .o Datei in Python?
Wenn du unter Linux bist, brauchst du eine .so und keine .o Datei.
Ich nehme an, du gehst das galileo-Computing Tutorial durch. Ich empfehle eher hier die offizielle Python Doku zu verwenden, denn Galileo ist - wenn ich mich recht entsinne - nicht ausführlich genug, was den C/C++ Part angeht. Und es gibt doch einiges was man beachten muss. Außerdem ist es deutlich angenehmer das ganze unter Linux mit distutils zu compilieren.
http://docs.python.org/extending/extending.html#compilation-and-linkage
http://docs.python.org/extending/building.html#building
http://docs.python.org/c-api/
Die cdll-Bibilothek ist afaik nur für Windows-dlls geeignet.
Beitrag zuletzt geändert: 24.8.2010 18:18:52 von bladehunter -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage