[SOLVED] ctypes + Strukturen an Funktionen in DLLs übergeben

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
top_dst
User
Beiträge: 3
Registriert: Dienstag 7. August 2007, 12:35

Hallo,
habe folgendes Problem:

Ich habe eine DLL welche eine Funktion enthält die beim Aufruf eine Struktur erwartet:

Code: Alles auswählen

class _daveOSserialType(Structure):
    _fields_ = [("rfd", c_int),("wfd", c_int)]
und wie folgt rufe ich das ganze auf:

Code: Alles auswählen

self.fds = _daveOSserialType()
self.fds.rfd = self.fds.wfd = self._socket.fileno()
[...]
di = self._libnodave.daveNewInterface(self.fds, "IF1", 0, daveProtoISOTCP, daveSpeed187k)
Also diese Funktion daveNewInterface erwartet sich als ersten Parameter die Struktur.
Nur leider erhalte ich bei dem Auruf folgende Meldung:

ValueError: 'Procedure called with not enough arguments (24 bytes missing) or wrong calling convention'

die anzahl der parameter stimmt und die zwei variablen daveProtoISOTCP, daveSpeed187k sind integer und auch sicher korrekt. kann mir das nur erklären, das die übergabe der struktur nicht passt.

wia übergibt man denn diese struktur? denn self.fds ist ja eigentlich ein objekt.

die dll ist eine C-Dll.

gruß, daniel



Edit meint: Fehler war:
self._libnodave = cdll.LoadLibrary("libnodave.dll")
sollte windll.LoadLibrary... sein :)
Antworten