LabVIEWForum.de - DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL

LabVIEWForum.de

Normale Version: DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Ein String, besonders PChar, hat gegenüber einem statischen (fixedsized) ArrayOfChar den gravierenden Nachteil, dass der String endet, wenn eine binäre Null erkannt wird. Fängt also der rückgelieferte Datenstream mit einer binären Null an, bedeutet das, dass keine Daten vorhanden sind. Strings, jetzt ANSI-Strings etc, kennen eine Länge, sodass solche Strings auch binäre Nullen übertragen können.

Die Übergabe als PChar ist also nur für Input-Daten sinnvoll. Die Funktion in der DLL interpretiert den PChar ja als Struct.

Für das Zurückgeben von Daten muss mal also ArrOfU8 mit definierter Länge (= Länge des Structs) angeben. In LabVIEW kann man dann aus dem U8-Array einen String machen, mit dem man dann per Deserialisieren an die Daten herankommt.

LV90
Hallo Leute,

es klappt bei mir immer noch nicht. Wacko

Nun versuche ich eine Wrapper-DLL zu erstellen. Die DLL soll die scruct aus der erten DLL auslesen, dann die Daten aus stuct in einzelne Array's, je nach dem Datentyp, reinschreiben. Danach sollte, laut meiner Theorie, LabVIEW duech "Knoten zum Aufruf externer Bibliotheken " die einzelne Arrays auslesen können.

In Visual C++ funktioniert mein Konstrukt.
Aber sobald ich versuche meine Wrapper DLL an "Knoten zum Aufruf externer Bibliotheken " erhalte ich eine Fehlermeldung, dass die original DLL nicht gefunden werden kann (siehe Bild).

Hier ist Quellcode:

ML5DLL.dll ist meine Original DLL, die ich an LabVIEW anbinden soll
ML5Data.h ist die Headerdatei dazu

DLLAdapterNeu.dll ist meine Wrapper DLL
DLLAdapterNeu.h ist Header dazu
DLLAdapterNeu.c Quellcode


ML5Data.h
[code]#include <time.h>
#define NAN 9.9E34

typedef struct
{
double SpurVL, SpurVR, SpurHL, SpurHR, SpurVG, SpurHG;
double geoAchseH;
double
' schrieb:Aber sobald ich versuche meine Wrapper DLL an "Knoten zum Aufruf externer Bibliotheken " erhalte ich eine Fehlermeldung, dass die original DLL nicht gefunden werden kann (siehe Bild).
Ist kein expliziter Pfad beim Laden der DLL angegeben, so kann die DLL entweder im Windows-Systemverzeichnis liegen oder in dem Verzeichnis, von dem aus der die DLL aufrufende Prozess gestartet wird. Das ist bei EXE das Verzeichnis, in der sich die EXE liegt, und bei VIs (also in der IDE) das Verzeichnis, in dem das VI liegt.
Zitat:Das ist bei EXE das Verzeichnis, in der sich die EXE liegt, und bei VIs (also in der IDE) das Verzeichnis, in dem das VI liegt.

Alle DLL und VI Liegen bei mir ineinem Verzeichnis (s. Bild)
AAAAAAAA......... ich hab verstanden...

Danke, Danke

Es Funktioniert !!!!!!!LolLolLol

Die beide DLL's sollen in einem Verzeichnis sein !!!!!
Seiten: 1 2 3
Referenz-URLs