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 mit mehr Output-Parametern, als Input-Parametern



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.06.2011, 11:12 (Dieser Beitrag wurde zuletzt bearbeitet: 14.06.2011 11:17 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Einbinden einer DLL mit mehr Output-Parametern, als Input-Parametern
(09.06.2011 13:18 )Herm schrieb:  und bei den Arrays habe ich Arrays mit eingebundenen "Numerischen Bedienelementen" verwendet, da ich nicht weiß, wie groß die Arrays werden und so müssten die Arrays ihre Größe anpassen können. Die Größe der Arrays ist vom eingebundenen Bild abhängig und das wechselt ständig. Alternativ kann ich natürlich die Arrays mit sehr großen Weiten inizialisieren.

Die Arrays müssen vor dem Aufruf in der Grösse anelegt werden die die Funktion maximal benützt. Eine C Funktion kann nicht einfach ein Array eben schnell mal grösser machen wenn das nötig ist. So funktioniert C halt einfach nicht. Das geht nur innerhalb eines spezifischen Frameworks wo sowohl der Aufrufer als auch der Aufgerufene sich ganz spezifisch darauf geeinigt haben, wie Speicher verwaltet wird und so. Das ist bei einer DLL grundsätzlich nicht gegeben, da sie von x-beliebigen Clients aufgerufen werden kann (Delphi, Visual Basic, Borland C, Viusual C, Gnu C application, LabVIEW, etc.) Der kleinste gemeinsame Teiler all dieser Systeme ist dass der Aufrufer für den Aufruf ALLEN Speicher zur Verfügung stellt den die DLL Funktion für Ausgabeparameter benötigt.

Normalerweise muss man die Arrays nicht einfach vorsorgehalber mit sehr grossen Grössen anlegen da man die Funktionen innerhalb eines Kontextes aufruft. In diesem Kontext ist die maximale Grösse meist eindeutig in der Dokumenation erwähnt (so nicht, den entsprechenden Programmierer an eine Schandpfahl binden und dort ein paar Tage schmoren lassen und dann die Komponente weit wegwerfen).

Aber das hier ist leider ziemlich grosses Pech:

* NOTE: histogram, circleList and display are allocated inside the function, so make sure to
* free the corresponding memory to avoid memory leaks!

Das heisst das die DLL Fumktion selber diese Speicher anlegt. Das unterstützt LabVIEW nicht direkt. Zwar kannst Du diese drei Parameter als Pointersized Integers, passed as Pointer definieren aber dann bekommst Du halt nur diesen Pointer zurück. Damit kann LabVIEW selber nichts tun. Wenn Du die Information in diesen Pointern benötigst ist das einzige was Du damit tun kannst, eine andere C Funktion aufrufen um die Daten aus diesem Pointer in ein richtiges LabVIEW Array zu kopieren. Such dazu nach MoveBlock hier, auf lavag.org und forums.ni.com und Du wirst viele Posts mit entsprechenden Informationen finden. Aber ohne etwas BasisverstÄndnis von C und C Pointern wird das eine sehr schmerzhafte Übung.

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


Nachrichten in diesem Thema
RE: Einbinden einer DLL mit mehr Output-Parametern, als Input-Parametern - rolfk - 14.06.2011 11:12

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL Dimitri 24 27.166 02.07.2010 15:16
Letzter Beitrag: Dimitri
  Einbinden einer dll (*.so) Apu 3 6.331 08.03.2010 19:51
Letzter Beitrag: rolfk
  Einbinden einer DLL, Speichermanagement Mictlantecutli 3 7.931 14.10.2009 08:33
Letzter Beitrag: Mictlantecutli
  Problem beim Einbinden einer DLL preacha 18 19.224 25.09.2008 11:51
Letzter Beitrag: baliik
  Einbinden einer Delphi-dll Svenni 6 8.377 17.10.2006 12:05
Letzter Beitrag: Svenni

Gehe zu: