String aus einer DLL einlesen

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.
Antworten
MaKi

Montag 13. Juni 2005, 13:49

Hallo Zusammen!

Habe da ein kleines Problem, was mit Python und einer C++ DLL zu tun hat.
Und zwar würde ich gerne in Python aus dieser DLL eine Funktion aufrufen,
welche mir einen Zeiger auf einen Array von Charactern (also nen String) zurück liefert.

Erste Versuche mittels calldll waren Erfolglos, mit ctypes hatte ich mehr Erfolg,
allerdings liefert mir da der einfache Ausdruck

libc = cdll.LoadLibrary("d:\martin\dll\dllname.dll")
Ausgabestring = libc.FGetLibraryVersion_pc()

nur eine Zahl zurück (wahrscheinlich eben nur den Zeiger der Adresse des Strings...)

Gibt es irgendeine Möglichkeit in Python, diesen Zeiger zu derefernzieren oder irgend eine andere Methode, wie ich an den Ausgabestring komme ?


Vielen Dank Euch allen schon mal im Vorraus für die Hilfe,


Gruß,

Martin
BlackJack

Montag 13. Juni 2005, 23:02

Du musst angeben was Du als Rückgabewert erwartest, wenn es etwas anderes als `int` ist.

Schau mal im ctypes Tutorial unter der Überschrift `Return types`, da ist ein Beispiel.
MaKi

Dienstag 14. Juni 2005, 07:41

Jou!!

Vielen herzlichen Dank! Das war der entscheidende Hinweis!

Hier mal der Vollständigkeit halber der ganze Code, mit dem's bei mir wunderbar gefunzt hat:

libc = cdll.LoadLibrary("d:\Martin\DLL\dllname.dll")
Version = libc.FGetLibraryVersion_pc
Version.restype = c_char_p
print Version()

Knifflig war, herauszufinden, wo die klammern gesetzt werden müssen ;-)

Besten Dank nochmal,


Gruß,
Martin
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Dienstag 14. Juni 2005, 10:45

Ich hab auch gerade vor zwei Tagen mit einer windll herum gekämpft... Mit ctypes hat es aber auch gleich super gefunzt. Ich kann jetzt eine USB Interfaceboard mit digitalen und analogen Augängen ( K8055 von Vellemann )
mit Python und der bereitgestellten windll ansteuern ... Relais Schalten, Licht an und aus machen etc. :P

Tabellar
Antworten