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 

Array als Return-Value bei DLL?



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!

24.08.2006, 12:49
Beitrag #1

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Array als Return-Value bei DLL?
<div align="left">Hallo, Leute,

ich habe heute mal eine etwas weiterführende Frage.

Ich bin bei meinen bisherigen Aufgaben immer wieder mal auf folgendes Problem gestossen: Ich will eine Funktion aus einer DLL aufrufen, deren Rückgabewert aber ein Pointer auf ein Array ist, also z.B. etwas der folgenden Art:

float* Funktionsname(int arg1, int groesse)

Wie gesagt, Rückgabewert ist die Anfangsadresse eines Arrays.

Das ist ja in LabVIEW bisher als Rückgabewert nicht vorgesehen. Klar könnte man den Rückgabewert erst einmal einer 32bit-Integer zuweisen, damit sollte ich ja dann die Anfangsadresse haben, aber wie weise ich dann den Inhalt dieser Adressen einem LabVIEW-Array zu?

MfG, Jens</div>

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.08.2006, 13:52
Beitrag #2

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Array als Return-Value bei DLL?
' schrieb:<div align="left">Hallo, Leute,

ich habe heute mal eine etwas weiterführende Frage.

Ich bin bei meinen bisherigen Aufgaben immer wieder mal auf folgendes Problem gestossen: Ich will eine Funktion aus einer DLL aufrufen, deren Rückgabewert aber ein Pointer auf ein Array ist, also z.B. etwas der folgenden Art:

float* Funktionsname(int arg1, int groesse)

Wie gesagt, Rückgabewert ist die Anfangsadresse eines Arrays.

Das ist ja in LabVIEW bisher als Rückgabewert nicht vorgesehen. Klar könnte man den Rückgabewert erst einmal einer 32bit-Integer zuweisen, damit sollte ich ja dann die Anfangsadresse haben, aber wie weise ich dann den Inhalt dieser Adressen einem LabVIEW-Array zu?

MfG, Jens</div>

das ganze funktioniert automatisch wenn die Call Library Node richtig konfigurierst. Dort wird eingestellt, wie das Array übergeben wird, typischweise geschieht das in der von dir beschriebenen Art und Weise mit einem Pointer auf ein Array.

Wenn du nun die DLL selber schreibst, dann ist es sinnvoll, wenn du dir mal diesen Artikel anschaust. Wenn du einfach nur eine DLL von jemand anderem einbinden willst, hilft dieser Artikel weiter.

Im letzten Fall geht es eigentlich nur darum, den Prototypen "richtig zusammenzuklicken". Die Umsetzung von Pointer auf LabVIEW Array erfolgt automatisch durch die Call Library Node ...

Grüße
CB

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.08.2006, 14:28
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Array als Return-Value bei DLL?
<div align="left">Hallo, CB,

danke für deine Antwort, aber das hilft mir nicht weiter.

Das ein Array (und damit ein Pointer zu einem Array) bei den Argumenten einer Funktion übergeben werden kann, ist mir klar. Auch das hier LabVIEW die Umsetzung übernimmt.

Was aber, wenn die Funktion als Return-Wert den Pointer auf das Array übergibt??
LabVIEW erlaubt ja hier nur die Auswahl Void, Numeric und String (so wie's aussieht auch in Version 8.20)!

Bin (auch für negative), aber natürlich viel mehr über positive Nachrichten glücklich.

MfG, Jens.</div>

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.08.2006, 15:54
Beitrag #4

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Array als Return-Value bei DLL?
' schrieb:Was aber, wenn die Funktion als Return-Wert den Pointer auf das Array übergibt??
LabVIEW erlaubt ja hier nur die Auswahl Void, Numeric und String (so wie's aussieht auch in Version 8.20)!

ouha, das is schlecht.

Hast du die DLL selbst entwickelt? --> dann würde ich das ändern
Wenn nicht bleibt dir eigentlich nur übrig eine Wrapper DLL zu schreiben, die die Daten so "umbiegt", dass du mit der CLN leicht drankommst ...

Grüße
CB

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Ausgabe von Carriage Return joedoe1979 4 3.859 08.07.2013 11:01
Letzter Beitrag: Lucki
  carriage return maze 4 5.759 07.12.2007 15:25
Letzter Beitrag: maze
  Stringeingabe mit "Return" übernehmen. Y-P 10 9.244 07.09.2007 10:38
Letzter Beitrag: rolfk
  return = \r in LabVIEW? macoio 5 7.271 29.03.2007 22:04
Letzter Beitrag: macoio
  Return-Abfrage ersetzen Ulli-Macky 2 4.106 22.02.2005 22:41
Letzter Beitrag: Ulli-Macky

Gehe zu: