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 Import externe Struktur in Header bekommen



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!

18.09.2016, 20:38 (Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2016 20:42 von rolfk.)
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.317
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL Import externe Struktur in Header bekommen
(15.09.2016 19:23 )hansi9990 schrieb:  Sorry aber ich verstehe nicht besonders viel von dem was du mir erklärst, zum einen weiß ich nicht wo und wie ich eine LabVIEW Managerfunktion erstelle und so ganz verstehe ich auch die zweite Alternative mit der ole32.dll.
Könntest du mir evtl. ein paar Bilder zeigen damit ich es verstehe?
Ich habe es selbst schon versucht (siehe Anhang) bin mir aber nicht sicher ob das so richtig ist, aber ich denke nicht denn es funktioniert auch nicht. Wink

Das ist alles nicht ganz richtig:

1) CoTaskMemAlloc() hat als Parameter einen Unsigned Pointersized Integer, als Wert übergeben wo man als Eingangswert angibt wie gross der Speicherbereich sein soll der angelegt werden soll. Die Funktion hat als Rückgabewert einen Pointersized Integer der den Pointer darstellt. In LabVIEW wird das als 64 Bit Integer gehandhabt aber an der Call Library Node wird das korrekt nach 32 Bit oder 64 Bit konvertiert je nach dem welche LabVIEW Version Du verwendest.

2) CoTaskMemFree() funktioniert so wie Du es im Moment anlegst zwar für 32 Bit LabVIEW vielleicht, ist aber eigentlich auch falsch. Hier solltest Du den Paremeter ebenfalls als Pointersized Integer, als Wert übergeben konfigurieren, genauso wie den Rückgabewert der vorigen Funktion.

3) Und wenn Du schon dabei bist, mache alle Controls für diesen struct Pointer in Deinen VIs einen 64 Bit Integer und konfiguriere die entsprechenden Call Library Node Parameter ebenfalls als Pointersized Integer, als Wert übergeben.

Grundsätzlich liesse sich aber sagen, dass dieses Problem Dir eindeutig über den Kopf wächst, und Du solche Dinge durch einen Experten machen lassen solltest. Denn auch wenn es nicht mehr crasht, ist das noch lange keine Garantie, dass es gut ist, und mit Deinen Kenntnissen hast Du keinerlei Möglichkeiten zu überprüfen ob es dann wirklich richtig ist. Bei sowas vertrete ich die Meinung, dass gar keine Software besser ist, dann eine von der man nicht weiss ob sie richtig ist. Und bei Pointern und dergleichen ist es halt so, dass auch wenn es nicht mehr kracht und Blue Screen of Death und Speicherverletzungsausnahmedialoge auftauchen, die ganze Sache noch immer schrecklich falsch sein kann.

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
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
RE: DLL Import externe Struktur in Header bekommen - rolfk - 18.09.2016 20:38

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  USB Relay DLL import hansi9990 3 10.938 02.09.2019 09:15
Letzter Beitrag: hansi9990
  Aufruf externe DLL Fehler 1097 Lars_Tragl 1 10.091 11.08.2016 16:13
Letzter Beitrag: Freddy
  externe DLL verstehen sarah.bla 7 14.637 05.07.2016 08:19
Letzter Beitrag: sarah.bla
  Fehlende externe Funktion galilio 4 14.009 28.04.2016 12:42
Letzter Beitrag: rolfk
  aus einem Library Import Installer machen galilio 5 13.754 04.04.2016 09:32
Letzter Beitrag: galilio
  Labview Import / DLL debuggen galilio 36 56.561 10.11.2015 21:42
Letzter Beitrag: rolfk

Gehe zu: