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 

Speicherprobleme mit 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!

09.12.2015, 14:05
Beitrag #1

Lars_Tragl Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012
2014
DE



Speicherprobleme mit DLL ?
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.12.2015, 16:19
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.634
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Speicherprobleme mit DLL ?
(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 ...

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2015, 09:50
Beitrag #3

Lars_Tragl Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012
2014
DE



RE: Speicherprobleme mit DLL ?
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?


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2015, 10:03
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 16.073
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: Speicherprobleme mit DLL ?
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2015, 10:27
Beitrag #5

Lars_Tragl Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012
2014
DE



RE: Speicherprobleme mit DLL ?
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2015, 10:33 (Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2015 10:34 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 16.073
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: Speicherprobleme mit DLL ?
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?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.12.2015, 10:44
Beitrag #7

Lars_Tragl Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012
2014
DE



RE: Speicherprobleme mit DLL ?
Sorry bin in vielen Sachen nicht so tief drin in LabVIEW. Was meinst du mit Drähten?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2015, 10:49
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 16.073
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: Speicherprobleme mit DLL ?
Hallo Lars,

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

Du hast die ganzen Links in meiner Signatur bemerkt?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2015, 10:52
Beitrag #9

Lars_Tragl Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Apr 2014

2012
2014
DE



RE: Speicherprobleme mit DLL ?
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2015, 11:12
Beitrag #10

jg Offline
CLD & CLED
LVF-Team

Beiträge: 15.410
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Speicherprobleme mit DLL ?
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

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 


Gehe zu: