INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

DLL einbinden mit "void * func"



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

14.10.2011, 13:56
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL einbinden mit "void * func"
(14.10.2011 13:42 )kaiman schrieb:  Moin liebe Forumuser,

ich versuche mich gerade zum ersten mal daran eine dll einzubinden - mehr oder weniger erfolgreich.Undecided
Das Problem ist, dass ich mir nicht ganz sicher bin, wie ich die Funktion korrekt aufrufe. Sie sieht wie folgt aus:
int_stdcall func(int Handle, void * Img, int Flg, int * LCount, int * Header)
Die DLL ist von einer Kamera und mit der Funktion rufe ich nach einigem Vorgeplänkel das Bild ab - so zumindest der Plan. Die Initialisierung funktioniert auch soweit ganz gut, zumindest erhalte ich keine Fehlermeldungen! Bei dem Funktionsaufruf zum Abholen des Bildes bekomme ich aber immer einen Fehlercode von der DLL zurück.
Ich bin mir nicht sicher, wie ich das "void * Img" übergeben muss... Ich dachte eigentlich, dass ich ein 16bit-Array mit der Größe "Anzahl der Pixel + Header" übergeben muss, bzw. den Array Data Pointer. Ich hab schon sämtliche Einstellungen durchprobiert, bin aber zu keinem besseren Ergebnis gekommen.

Die Parameter übergebe ich wie folgt:
Handle: Numeric, signed16, Value -> (Funktioniert bei den anderen Funktionen auch)
Img: Array, unsigned16, Array Data Pointer (so meine bisherige Annahme)
Flg: Numeric, signed16, Value
LCount: Numeric, unsigned16, Pointer to Value
Header: Numeric, signed16, Pointer to Value

Hat jemand von euch eine Idee einen Tipp, was ich falsch machen könnte? Hab im Bezug auf das Einbinden von DLLs noch keine Erfahrung.

Danke schon mal im Voraus für eure Hilfe.
Schöne Grüße und schon mal ein schönes und sonniges Wochende,
KaiCool
Mit dieser Information lässt sich grundsätlich nicht viel spezifisches sagen. Ohne genaue Beschreibung dieser Funktion ist da wenig zu machen. Dinge die es zu beachten gilt:

- stdcall calling convention
- Du musst dieses Array in LabVIEW mittels Initialize Array auch auf die richtige Grösse initialisieren, das kann die DLL Funktion nicht tun, und LabVIEW kann das auch nicht für Dich tun, da es keine Ahnung darüber haben kann was die Funktion benötigt.
- int ist ein 32 bit integer.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: DLL einbinden mit "void * func" - rolfk - 14.10.2011 13:56

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Dll erstellen - void* als Funktion-Ausgabewert Wujaszek 2 7.281 15.05.2014 10:17
Letzter Beitrag: rolfk

Gehe zu: