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 

DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-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!

24.06.2010, 16:21 (Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2010 19:10 von jg.)
Beitrag #1

Dimitri Offline
LVF-Grünschnabel
*


Beiträge: 34
Registriert seit: Jun 2009

2009
2009
de

30171
Deutschland
DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL
Hallo zusammen ,

seit ein Paar Tagen beschäftige ich mich mit folgendem Problem...Huh

Ich erhalte eine fertige DLL (in C geschrieben, C-Code unbekannt, aus Headerdateien Funktionen mit den Parametern sichtbar).
Diese DLL soll ich in mein LV-Programm einbinden. Nachdem ich die Foren durchgesucht habe, weiß ich nun, dass es in LabVIEW über den "Knoten zum Aufruf externer Bibliotheken" machen kan.
In dem Tutorial LVF-Tutorial:[ http://www.LabVIEWforum.de/DLL-einbindung-t5504.html ] habe ich gefunden, dass eine Funktion, die einen Pointer auf eine Struktur, die aus Unterschiedlichen Komplexen datentypen besteht, nur mit großem Aufwand in LabVIEW eingebunden werden kann. Leider muss ich mit zwei solchen Strukturen zu tun haben. O

Header Datei:

/////////////////////////////////////////////////////////////////////////////
// Headerdatei für Datenstrukturen und Funktions-Prototypen
// /////////////////////////////////////////////////////////////////////////////

#include <time.h>
#define NAN 9.9E34

typedef struct
{
double SpurVL, SpurVR, SpurHL, SpurHR, SpurVG, SpurHG, SpurVMaxDiff, SpurHMaxDiff;

double SturzVL, SturzVR, SturzHL, SturzHR, SturzVMaxDiff, SturzHMaxDiff;

double SpurDiff20VL, SpurDiff20VR, SpurDiff10VL, SpurDiff10VR, SpurDiffMaxDiffV;

double LenkWMaxLinksVL, LenkWMaxLinksVR, LenkWMaxRechtsVL, LenkWMaxRechtsVR;

double EingWinkel20VL, EingWinkel20VR, EingWinkel10VL, EingWinkel10VR;

double RadversatzV, RadversatzH;

double FahrachswinkelH;

double LenkwinkelMaxVL, LenkwinkelMaxVR;

double Nachlauf20VL, Nachlauf20VR, Nachlauf10VL, Nachlauf10VR, NachlaufMaxDiff;

double Spreizung20VL, Spreizung20VR, Spreizung10VL, Spreizung10VR, SpreizungMaxDiff;

double Achsversatz;

double SeitenversatzL, SeitenversatzR;

double Radstandsdiff;

double Spurweitendiff;

char ErrorMessage[2048];

char ProtocolFiles[256];

struct tm FileTime;
}
ML5DataStatic;

typedef struct
{
double SpurVL, SpurVR, SpurHL, SpurHR, SpurVG, SpurHG;

double geoAchseH;

double SturzVL, SturzVR, SturzHL, SturzHR;

double RadversatzV, RadversatzH;

char ErrorMessage[2048];
}
ML5DataDynamic;

/////////////////////////////////////////////////////////////////////////////
// Prototypen der Interface - Funktionen
/////////////////////////////////////////////////////////////////////////////

unsigned long GetDynamicData(ML5DataDynamic *DataSetPtr, char* ServerAddress, unsigned int ServerPort, unsigned int MaxTimeOut);

bool GetStaticData(char* Dir, char* Filter, char* Measurement, ML5DataStatic* DataSetPtr);

void InitDynamicData(ML5DataDynamic* DynamicData);

void InitStaticData (ML5DataStatic* StaticData);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Meines Wissens, gibt es zwei Möglichkeiten so eine DLL einzubinden:

1) Schreiben eine Wrapper-DLL, die die Daten aus den Strukturen in die einfache Datentypen konvertiert

2) Laut diesem Beitrag [http://www.LabVIEWforum.de/index.php?showtopic=16279&pid=96533&mode=threaded&start=#entry96533] kann man eine Struktur, die der Originalstruktur ähnlich ist, in LabVIEW erstellen. Und dann diese Struktur an den "Knoten zum Aufruf externer Bibliotheken" übergeben.


Mein Versuch nach Variante 2) (Siehe Anhang) war erfolglos.
Ich erhalte ein Fehler: "Mindestens ein Eingang dieser Funktion, der für deren Funktionsfähigkeit erforderlich ist, ist offen oder nicht korrekt verbunden." Angry

Da ich in C und C++ nicht so stark bin, weiß ich nicht, wie ich eine passende eine Wrapper-DLL erstellen kann.Unsure

Kann mir jemand ein Tipp geben, bzw. eine Lösung meines Problems. Wie schreibe ich hierzu die passende Wrapperfunktion. Meine vorgehensweise in C++ (Visual C++). Wall
Oder was habe ich in meinem VI (nach Lösungsvariante 2) falsch gemacht?


Für jede hilfreiche Antwort wäre ich sehr dankbar.

EDIT Jens G:
CROSSPOST:
http://LabVIEWportal.eu/viewtopic.php?f=53&t=2273


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - Dimitri - 24.06.2010 16:21

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  LabView Wrapper - PostUserEvent aus externer DLL Stephan235 3 10.120 22.07.2015 13:28
Letzter Beitrag: rolfk
  DLL einbinden mittels Wrapper OXO 11 13.515 08.05.2013 10:27
Letzter Beitrag: OXO
  Wrapper DLL zum dynamischen Laden b.p 3 6.314 17.04.2012 13:18
Letzter Beitrag: rolfk
  C# MAPI .NET WRAPPER DLL und Lotus Notes Totte 3 7.481 16.12.2011 09:15
Letzter Beitrag: Totte
  Einbinden einer DLL mit mehr Output-Parametern, als Input-Parametern Herm 3 5.795 14.06.2011 11:12
Letzter Beitrag: rolfk
  Trinamic TMCM 610 über Wrapper.dll passimatze 2 5.378 17.06.2010 06:23
Letzter Beitrag: passimatze

Gehe zu: