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!

22.10.2017, 21:07 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2017 21:08 von rolfk.)
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Fehler 1097 beim Übergeben von Arrays
(13.09.2017 16:33 )jg schrieb:  
(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

Das hätte keinerlei Sinn!

Code:
void composeMsgTest(uint32_t a,
                    uint32_t b,
                    uint32_t c,
                    float    d,
                    uint8_t  *retData,
                    uint16_t *retLen);

retData ist hier nur ein Pointer der by value übergeben wird. Selbst wenn die DLL hier einen eigenen Pointer intern anlegen würde und ihn diesem Parameter zuweisen würde, käme der nie beim Anrufer an, da er auf dem Stack liegt und vom Aufrufer grundsätzlich NIE Parameter vom Stack zurückgelesen werden.
Da müsste die Funktion schon so aussehen:
Code:
void composeMsgTest(uint32_t a,
                    uint32_t b,
                    uint32_t c,
                    float    d,
                    uint8_t  **retData,
                    uint16_t *retLen);

und dann bekommst Du tatsächlich das Problem dass LabVIEW damit direkt nicht sehr viel kann. Denn LabVIEW Arrays sind nun einmal grundsätzlich "managed" aber dann auf LabVIEW Art und nicht .Net, da LabVIEW ungefähr 20 Jahre vor .Net entstand.

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


Nachrichten in diesem Thema
RE: Fehler 1097 beim Übergeben von Arrays - rolfk - 22.10.2017 21:07

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehlercode 1097 beim Aufrufen einer C++ DLL Dr. Nuke 11 4.093 22.07.2022 22:39
Letzter Beitrag: Martin.Henz
  Picoscope Err 1097 ares2013 10 10.352 26.12.2020 14:03
Letzter Beitrag: hansi9990
  Aufruf externe DLL Fehler 1097 Lars_Tragl 1 8.789 11.08.2016 16:13
Letzter Beitrag: Freddy
  Error 1097 katanad 2 10.832 15.06.2016 11:31
Letzter Beitrag: katanad
Exclamation Backgroundworker aus VB.NET DLL - Fehler beim Beenden Max92 0 9.233 03.11.2015 14:17
Letzter Beitrag: Max92
  DLL Fehler 1097 M.VI 1 5.992 02.12.2014 08:38
Letzter Beitrag: GerdW

Gehe zu: