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 

Einbinden einer DLL, Speichermanagement



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!

13.10.2009, 15:41
Beitrag #1

Mictlantecutli Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Aug 2009

2010
2009
kA

2.....
Deutschland
Einbinden einer DLL, Speichermanagement
Hallo allerseits,
ich arbeite seit kurzem mit LabVIEW und bin jetzt auf ein Problem gestoßen, das ich nicht gelöst bekomme. Ich würde mich daher sehr freuen, wenn mir jemand weiterhelfen könnte.
Also folgendes: Ich möchte die Funktionen einer DLL nutzen. (Mit Hilfe der DLL kommuniziere ich mit einem externen Gerät). Dazu benutze ich den Block "Aufruf externer Bibliotheken". Der Funktionsprototyp lautet:

Code:
unsigned int GetData(double **X, double **Y);
Das Einbinden der DLL funktioniert einwandfrei, LabVIEW erkennt die exportierten Funktionen der DLL problemlos. Bei den Parametern habe ich die folgenden Einstellungen gemacht:

Typ: Array
Datentyp: 8-Byte-Double
Dimension: 1
Array-Format: Array-Handle
An die Ein- und Ausgänge des LabVIEW-Blocks habe ich zum Testen Bedien- bzw. Anzeigeelemente gehängt.

Die DLL-Funktion allokiert selbstständig den von ihr benötigten Speicher, den man mit einer weiteren DLL-Funktion wieder freigeben muss. (Leider kann ich nicht mehr Informationen zur Verfügung stellen, ich kenne nur die Funktionsprototypen und eine kurze Beschreibung, den Quellcode habe ich nicht.)
Das Problem ist, dass LabVIEW nach dem Aufruf entweder den Dialog "Nicht genügend Speicher zum Abschließen dieser Operation" anzeigt, oder direkt nach der Ausführung abstürzt. (Unabhängig davon, ob ich die Funktion zum Freigeben des Speichers aufrufe oder nicht.) Ich denke mal, da kommen sich die DLL und der Speichermanager in die Quere, oder?
Tja jedenfalls weiß ich nicht genau wie ich die Funktion behandeln soll, sodass keine Speicherkonflikte entstehen.

Ich hoffe, ich konnte mein Problem hinreichend beschreiben... Ach ja, das VI habe ich nicht mit hochgeladen, da es ohne das Gerät nicht korrekt ausgeführt werden kann. Und noch etwas: Die DLL wurde schon in mehreren C-Projekten genutzt, wo sie einwandfrei funktioniert.
---
LabVIEW Version 8.6.1f1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
Einbinden einer DLL, Speichermanagement - Mictlantecutli - 13.10.2009 15:41

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Einbinden einer DLL mit mehr Output-Parametern, als Input-Parametern Herm 3 6.302 14.06.2011 11:12
Letzter Beitrag: rolfk
  DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL Dimitri 24 27.386 02.07.2010 15:16
Letzter Beitrag: Dimitri
  Einbinden einer dll (*.so) Apu 3 6.386 08.03.2010 19:51
Letzter Beitrag: rolfk
  Problem beim Einbinden einer DLL preacha 18 19.456 25.09.2008 11:51
Letzter Beitrag: baliik
  Einbinden einer Delphi-dll Svenni 6 8.449 17.10.2006 12:05
Letzter Beitrag: Svenni

Gehe zu: