C++ in Python einbinden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Donnerstag 1. Mai 2008, 11:13

lunar hat geschrieben:...Vorrausgesetzt, die Zielplattform hat einen Compiler parat, was ja nicht überall der Fall ist. ...
Nein wirklich??? Echt??? Ughhh, das hätte ich ja jetzt nicht für möglich gehalten ... boah.

:roll:
sechsrad
User
Beiträge: 173
Registriert: Montag 31. März 2008, 17:09

Donnerstag 1. Mai 2008, 20:52

Als kleines Beispiel kannst du dir eine cgi.escape implementierung in C ansehen: http://dev.pocoo.org/hg/sandbox/file/10 ... xmlescape/
In dem Ordner ist die C Datei + ein setup.py fürs Kompilieren.
zeig mal etwas, was mehr aufklärend ist, da steigt doch kein anfänger durch.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Donnerstag 1. Mai 2008, 20:56

Um das zu verstehen, sollte es reichen, die offizielle Doku zu "Extending and Embedding" zu lesen.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Donnerstag 1. Mai 2008, 21:25

sechsrad hat geschrieben:zeig mal etwas, was mehr aufklärend ist, da steigt doch kein anfänger durch.
Das verlinkte Modul ist nicht sonderlich komplex. Das + die Dokumentation zur API ist denke ich kein schlechter Einstieg. Zumindest ich lerne gerne an Hand von realitätsnahen Beispielen.
TUFKAB – the user formerly known as blackbird
mulek
User
Beiträge: 11
Registriert: Montag 28. April 2008, 21:15
Kontaktdaten:

Sonntag 4. Mai 2008, 10:01

Hab mich an das erste Beispiel hier in diesem Thread gehalten.
Hab auc hdann mit dem gcc dieses C-Programm kompiliert und dann eine dll erzeugt.


from ctypes import *
f =cdll.LoadLibrary("test.dll")

Beim Einbinden in ein Python projekt kommt dann folgender Fehler:

Traceback (most recent call last):
File "E:\Mulek\Dokumente\Eclipse\Test\src\test.py", line 2, in <module>
f =cdll.LoadLibrary("test.dll")
File "C:\Program Files\Python\Lib\ctypes\__init__.py", line 431, in LoadLibrary
return self._dlltype(name)
File "C:\Program Files\Python\Lib\ctypes\__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] Das angegebene Modul wurde nicht gefunden


Was hab ich falsch gemacht?
Muss ich sonst noch irgendeine Vorarbeit leisten, damit dies funktioniert?
Gibt es vl Probleme mit Windows Vista diesbezüglich?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Sonntag 4. Mai 2008, 11:51

"test.dll" wurde ja offensichtlich nicht gefunden. Probier es doch einmal mit einem absoluten Pfad.
MfG
HWK
mulek
User
Beiträge: 11
Registriert: Montag 28. April 2008, 21:15
Kontaktdaten:

Montag 5. Mai 2008, 07:56

mit einem absluten Pfad funktioniert es auch nicht kommt die selbe fehlermeldung
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Montag 5. Mai 2008, 08:03

Hast den Pfad mal vorher mit os.path.isfile("<hier pfad zur dll>") getestet?
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Montag 5. Mai 2008, 08:36

Vielleicht ist die DLL ja auch gegen eine andere DLL gelinkt, die jetzt nicht gefunden wurde. Dann sollte in stderr irgendwas wie
err:module:import_dll Library whatever.dll (which is needed by L"Z:\\tmp\\test.dll") not found
auftauchen.

Edit: Oder auch nicht, das dürfte/könnte natürlich auch von wine kommen.
BlackJack

Montag 5. Mai 2008, 08:46

Das kommt sehr wahrscheinlich von Wine. IIRC ist es unter Windows wichtig, dass die DLL, die man importieren will im %PATH% liegt.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Montag 5. Mai 2008, 09:21

BlackJack hat geschrieben:Das kommt sehr wahrscheinlich von Wine.
Ja, kommt von Wine. Mit wirklich Windows kommt eine farbige Meldung zum Wegklicken (zumindest bei 2k).
Antworten