Seite 1 von 1

Arrays

Verfasst: Freitag 7. August 2009, 10:41
von sevelen
Hallo,

ich komm noch nicht so ganz klar mit den Arrays in Python. Ich habe vor ein Array zu erzeugen und es dann an eine Funktion (WinDLL) zu übergeben. In der DLL wird es wie folgt erwartet.

Code: Alles auswählen

void ArrayTest(int test[]);
Als nächstes habe ich ein Array in Python erstellt, jetzt kommt allerdings mein Problem wie übergebe ich es?

Code: Alles auswählen

X = array([1,2,3])
mydll.ArrayTest(X)
Währe super wenn mir jemand einen Tipp geben könnte

Verfasst: Freitag 7. August 2009, 10:48
von lutz.horn
Für mich als Nicht-Windows-User: woher kommt die Funktion 'array'?

Verfasst: Freitag 7. August 2009, 10:51
von sevelen
Das is python code kommt aus der numpy

Verfasst: Freitag 7. August 2009, 10:53
von numerix
lutz.horn hat geschrieben:Für mich als Nicht-Windows-User: woher kommt die Funktion 'array'?
Mit Windows hat das nichts zu tun, aber falls es aus dem array-Modul der Standard-Lib von Python käme, dann fehlte der typecode ..

Verfasst: Freitag 7. August 2009, 11:06
von sevelen
Kommt aus der NumPy, aber danke für den hinweiß habe es gleich eingebaut

Code: Alles auswählen

X = array([1, 2, 3, 4, 5],'l')
Nur wie bekomme ich das nun übergeben? Ich frage daher weil ich würde vermuten so...

Code: Alles auswählen

mydll.ArrayTest(X)
Dann bekomme ich allerdings "ctypes.ArgumentError: argument 1: <type 'exceptions.TypeError'>: Don't know how to convert parameter 1"

Verfasst: Freitag 7. August 2009, 11:58
von HWK
Schau Dir mal in der ctypes-Doku die Kapitel über Arrays evtl. auch über Pointers an.
MfG
HWK

Verfasst: Freitag 7. August 2009, 11:59
von BlackJack
`ctypes` kann nicht automatisch etwas mit Objekten anfangen, nur weil der Typ zufällig den Namen `array` hat. Du musst schon ein Array übergeben, welches aus den entsprechenden `ctypes`-Typen besteht. Oder schauen, ob Du von Numpy irgendwie die Speicheradresse auf die Daten bekommst und daraus dann einen `ctypes`-Zeiger erstellen kannst.

Verfasst: Freitag 7. August 2009, 12:09
von CM
http://www.scipy.org/Cookbook/Ctypes
Hilft das?

Gruß,
Christian