Seite 1 von 1

String aus einer DLL einlesen

Verfasst: Montag 13. Juni 2005, 13:49
von MaKi
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

Verfasst: Montag 13. Juni 2005, 23:02
von BlackJack
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.

String aus einer DLL lesen

Verfasst: Dienstag 14. Juni 2005, 07:41
von MaKi
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

Verfasst: Dienstag 14. Juni 2005, 10:45
von tabellar
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