LabVIEWForum.de
Speicherprobleme mit DLL ? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Speicherprobleme mit DLL ? (/Thread-Speicherprobleme-mit-DLL)

Seiten: 1 2


Speicherprobleme mit DLL ? - Lars_Tragl - 09.12.2015 14:05

Hallo,

ich binde eine DLL über LabVIEW ein.
Dieser wird ein Array übergeben, bisher 700 Felder groß.
Die DLL ruft dieses mit char* im Funktionsaufruf auf, arbeitet intern damit und befüllt es.

Da ich ziemlich viele Nachrichten abgreife, reichen mir die 700 Felder nicht mehr.
Wenn ich auf 1000 erhöhe, schmiert mir LabVIEW ab. Fehlermeldung 0xC0000005

Hat jemand Erfahrung damit ?
Wie könnte ich das ganze umgehen?

Funktionsaufruf ca. void Funktion(...., char* buffer, .....)

Vielen Dank für Tipps und Ratschläge


RE: Speicherprobleme mit DLL ? - IchSelbst - 09.12.2015 16:19

(09.12.2015 14:05 )Lars_Tragl schrieb:  Funktionsaufruf ca. void Funktion(...., char* buffer, .....)
Stellst du denn genug Speicherplatz zur Verfügung?

Besser als einen Pseudo-Funktionsaufruf und auch besser als ein Bild mit DLL-Knoten zu posten ist es, ein VI mit dem Knoten und dessen Beschaltung zu posten ...


RE: Speicherprobleme mit DLL ? - Lars_Tragl - 11.12.2015 09:50

Hier mal das Blockschaltbild, sowie die Fehlermeldung.

Das Array hat wie gesagt zum jetzigen Zeitpunkt 700 Felder. Ab 1000 beginnt es Probleme zu machen.

Eine Arraygröße wird derzeit nicht mit an die DLL übergeben, da die DLL das Array als Pointer entgegennimmt und dann lediglich befüllt.

Daher wird doch eigl auch der Speicher schon in LabVIEW alloziiert?


RE: Speicherprobleme mit DLL ? - GerdW - 11.12.2015 10:03

Hallo Lars,

Zitat:Das Array hat wie gesagt zum jetzigen Zeitpunkt 700 Felder.
Welches "Array"?
Wo werden die "700 Felder" (du meinst wahrscheinlich "Elemente") angelegt?

Zitat:Daher wird doch eigl auch der Speicher schon in LabVIEW alloziiert?
Eigentlich schon. Nur sieht man das in deinem Bild nicht…


RE: Speicherprobleme mit DLL ? - Lars_Tragl - 11.12.2015 10:27

Hey Gerd,

sorry habs vergessen hinzu zuschreiben.

Betroffen ist der Receive Buffer.

Hab jetzt über einen Sniffer die Größe rausbekommen und es funktioniert.

Das Array braucht mind. 4000 Felder.

Vielen Dank für eure Hilfe!

Grüße


RE: Speicherprobleme mit DLL ? - GerdW - 11.12.2015 10:33

Hallo Lars,

Zitat:Betroffen ist der Receive Buffer.
Hab jetzt über einen Sniffer die Größe rausbekommen und es funktioniert.
Das Array braucht mind. 4000 Felder.
Wenn man statt eines Controls die InitArray-Funktion verwenden würde, könnte man sowas auch anhand eines Bildes des BD erkennen…

Frage zu deinem VI: warum die ganzen lokalen Variables? Warum keine Drähte?


RE: Speicherprobleme mit DLL ? - Lars_Tragl - 11.12.2015 10:44

Sorry bin in vielen Sachen nicht so tief drin in LabVIEW. Was meinst du mit Drähten?


RE: Speicherprobleme mit DLL ? - GerdW - 11.12.2015 10:49

Hallo Lars,

Draht = Verbindungslinie zwischen LabVIEW-Funktionen/-Elementen im Blockdiagramm…

Du hast die ganzen Links in meiner Signatur bemerkt?


RE: Speicherprobleme mit DLL ? - Lars_Tragl - 11.12.2015 10:52

Sorry jetzt weiß ich was du meinst!

Die lokalen Variablen kommen später wieder weg. Ist gerade drinnen um zu sehen, ob der richtige Befehl zusammengesetzt wird.


RE: Speicherprobleme mit DLL ? - jg - 11.12.2015 11:12

Zwecks lokaler Variablen: Wenn ich mich richtig an deinen anderen Thread erinnere, dann ist die DLL auch von dir. Wieso muss an diese DLL 2x dieselbe Info übergeben werden (1x in dem zusammengesetzten Array, 1x als Einzel-Eingänge)?

Zwecks Arraygröße 4000 anstatt 1000 ist nötig? Hört sich so an, als ob du in deiner DLL irgendwann mit U32 anstatt U8 arbeitest...

Gruß, Jens