![]() |
C++ Dll in Labview einbinden - 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: C++ Dll in Labview einbinden (/Thread-C-Dll-in-Labview-einbinden--25551) Seiten: 1 2 |
RE: C++ Dll in Labview einbinden - galilio - 05.03.2014 19:30 Hallo alle zusammen, Danke an alle. Es hat mit diesem demo Projekt alles funktioniert. ![]() in meinem Projekt sieht die lage etwas anders. Ich habe zwei DLL File die eigentlich von einander abhängig sind. Das DLL2 wird von DLL 1 gebraucht. Die Funktionalität, die ich brauche befindet sich In DLL2. Ich weiss es nicht wie ich am besten vorgehen soll? Soll ich für jede DLL eine Labview Import mit der nötige DLLWrapper und dann die Funktionen mit Labview konfigurieren? Wenn ich nur für DLL1 einen Labview Import mache und bestimmte funktionalität von DLL1 gebraucht sind dann funktioniert das ganze bestimmt nicht. Ist meine vorhaben überhaupt machbar? Ich frage am besten bevor ich auf die schnauze falle ![]() RE: C++ Dll in Labview einbinden - galilio - 06.03.2014 09:38 Noch eine Frage Bitte: Beim DLL erstellung: spielt eine Rolle, ob der DLL von eine Release Version oder Debug Version ist? RE: C++ Dll in Labview einbinden - rolfk - 08.03.2014 01:56 (06.03.2014 09:38 )galilio schrieb: Noch eine Frage Bitte: Solange Du die DLL nur auf dem Entwickelsystem ausführen willst, auf dem Du auch den C Compiler installiert hast nicht. Aber wenn Du das auf einem anderen Rechner auch testen willst kommst Du legal nur mit einer Release DLL weiter. Die Debug DLL linkt mit einer speziellen Version der C Runtime. Für diese hast Du zumindest bei Visual C keinerlei Rechte diese zu distributieren oder auch nur auf einem anderne Rechner zu installieren, ohne dort auch eine lizenzierte Visual C Installation zu machen. Was die anderen Probleme betrifft, begreife ich eigentlich nur ![]() LabVIEW kann nur globale Funktionen aus einer DLL importieren, keine Objektmethoden. (Und nicht nur LabVIEW! C++ Objektcode kann grundsätzlich nur in ein Projekt gelinkt werden dass mit dem gleichen C++ Compiler compiliert wird, wie die Bibliothek selber, teilweise geht es sogar schon verkehrt bei unterschiedlichen Versionen des selben Compilers. Selbst wenn Du eine C++ DLL machst würdest Du ziemlich sicher gewaltig auf die Schnauze fallen, wenn Du diese DLL in einem Projekt verwenden möchtest, das mit einem anderen Compiler erzeugt wird dann die DLL selber. Es gibt nämlich keinerlei Binärstandard für C++ Bibliotheken und wenn es ihn gäbe würde sich keiner der Compilerhersteller 100% daran halten.) In Deinem Beispiel solltest Du wohl am besten den Code so aufteilen: MyClass.cpp ist die Implementation Deiner Klasse. Was Du darin haben willst ist wirklich Deine Sache, respektive hat Deine DLL ja hoffentlich schon (natürlich heisst das da nicht MyClass!!). Code: #include "StdAfx.h" Nun kommt der Wrapper z.B. in file MyClassWrap.cpp Code: #include "MyClass.h" In LabVIEW kannst Du nun mit der Call Library Node folgende Funktionen einlinken: void* createMyClass(int); void destroyMyClass(void*); int MyClass_Methode1(void*, int); int MyClass_Methode2(void*, int, double); Wenn das noch nicht deutlich ist kann ich auch nicht mehr helfen. |