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 

Dieses Thema hat akzeptierte Lösungen:

Fehler 1097 beim Übergeben von Arrays



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!

12.09.2017, 17:56
Beitrag #1

Flemmy Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Oct 2013

2013
2013
DE

28359
Deutschland
Fehler 1097 beim Übergeben von Arrays
Moin,

Ich befasse mich gerade damit eine selbstgeschriebene DLL mit LabVIEW (2013) einzubinden.
Hintergrund des Ganzen ist, dass ich mir die einfache GUI Programmierung von LabVIEW zunutzen machen möchte um einige Funktionen zu testen, die ich anschließend jedoch in C bereitstelle. C++/Qt kommen aktuell aber nicht in Frage, da müsste ich mich erste einarbeiten.

Bei einfachen Funktionen funktioniert der Aufruf aus der DLL auch einwandfrei.
Code:
uint8_t add(uint8_t a, uint8_t b);
void mult(uint8_t a, uint8_t b, uint16_t *ret);

Problematisch wird es, wenn Arrays hinzukommen.
Was mein Code macht, ist einen Array gemäß einiger Parameter zu füllen:
Code:
void composeMsgTest(uint32_t a,
                    uint32_t b,
                    uint32_t c,
                    float    d,
                    uint8_t  *retData,
                    uint16_t *retLen);
Hier ist retData das Array (oder viel mehr der Pointer auf dessen erstes Element) und retLen dessen Länge.
Sobald ich diesen Code dann in eine DLL compiliere kommt es in LabVIEW zu Problemen, genauer dem Fehler 1097. Binde ich das

Zum Testen habe ich mir dann ein kleines C Programm geschrieben. Dieses läuft einwandfrei durch und gibt mir die erwarteten Daten aus.

Nach einigem rumprobieren habe ich nun festgestellt, dass ich mich bei den Arrays in LabVIEW zu doof anstelle.
In dem Beispielen habe ich dann die "DW Test Copy.vi" gefunden. In der entsprechenden Header Datei der DLL wird der Array als
Code:
int arr[]
übergeben. Ändere ich meinen Code dahingehend tritt weiterhin der selbe Fehler auf.

Beim Aufruf der externen Bib stelle ich das entsprechende Parameter auf den Typ "Array", den Datentyp "uint8_t" und das Format auf "Array Datenzeiger". Der angezeigt Funtionsprototyp entspricht dabei dem, was in meiner Header Datei steht.

Anbei gibt es einmal die DLL und die Test Vi.

Ich wäre für Anregungen und Tipps im Umgang mit Arrays beim Aufruf von externen Bibs sehr dankbar.

Gruß
Flemmy


Angehängte Datei(en)
0.0 .dll  example_dll.dll (Größe: 12,02 KB / Downloads: 6)

13.0 .vi  dllTest.vi (Größe: 7,56 KB / Downloads: 6)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2017, 10:03 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2017 10:05 von jg.)
Beitrag #2

jg Offline
CLD & CLED
LVF-Team

Beiträge: 14.921
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Fehler 1097 beim Übergeben von Arrays

Akzeptierte Lösung

Der Memory-Manager von LabVIEW ist sehr eigen bei Speicher-Allozierungen, das Übernehmen von Speicherbereichen, die in irgendwelchen DLLs angelegt werden, mag er nicht sonderlich. In der Regel funktionieren solche Array-Rückgaben aber, wenn der Speicher in LabVIEW vorbelegt wird und dann an die DLL übergeben wird. Da wir nicht wissen, was du in deiner DLL machst, hab ich mal rumgespielt und zumindest kommt es so:

   

zu keinem Absturz mehr.

Gruß, Jens

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
13.09.2017, 16:00
Beitrag #3

Flemmy Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Oct 2013

2013
2013
DE

28359
Deutschland
RE: Fehler 1097 beim Übergeben von Arrays
Ja wunderbar!

Wenn ich das so sehe, da macht das auch total Sinn. Im C Testprogramm übergebe ich auch einen initialisierten Array. Da kommt der auch nicht aus dem Nichts.

Nun gut, vielen Dank!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2017, 16:33
Beitrag #4

jg Offline
CLD & CLED
LVF-Team

Beiträge: 14.921
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Fehler 1097 beim Übergeben von Arrays
(13.09.2017 16:00 )Flemmy schrieb:  Ja wunderbar!

Wenn ich das so sehe, da macht das auch total Sinn. Im C Testprogramm übergebe ich auch einen initialisierten Array. Da kommt der auch nicht aus dem Nichts.

Nun gut, vielen Dank!

Soso, du allozierst also das Array nicht einmal innerhalb deiner DLL. Kein Wunder, dass LabVIEW abstürzt... Confused

Gruß, Jens

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Aufruf externe DLL Fehler 1097 Lars_Tragl 1 1.205 11.08.2016 16:13
Letzter Beitrag: Freddy
  Error 1097 katanad 2 1.588 15.06.2016 11:31
Letzter Beitrag: katanad
Exclamation Backgroundworker aus VB.NET DLL - Fehler beim Beenden Max92 0 1.861 03.11.2015 14:17
Letzter Beitrag: Max92
  DLL Fehler 1097 M.VI 1 2.998 02.12.2014 08:38
Letzter Beitrag: GerdW
  Fehler 1097 bei Knoten zum Aufruf externer Bibliotheken in CLF-Knoten.vi KingLui 2 3.389 16.09.2014 13:47
Letzter Beitrag: KingLui
  Fehler 1097 bei Aufruf C++ DLL F-Trooper 9 10.857 24.02.2014 12:38
Letzter Beitrag: Kiesch

Who read this thread?
5 User(s) read this thread:
GerdW, Freddy, Lucki, Achim, th13

Gehe zu: