Seite 1 von 1

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

Verfasst: Mittwoch 12. August 2009, 09:59
von top_dst
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 :)