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 

C++ Dll in Labview einbinden



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!

05.03.2014, 19:30
Beitrag #11

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: C++ Dll in Labview einbinden
Hallo alle zusammen,


Danke an alle.

Es hat mit diesem demo Projekt alles funktioniert.Big Grin
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 Blink


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.03.2014, 09:38
Beitrag #12

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: C++ Dll in Labview einbinden
Noch eine Frage Bitte:
Beim DLL erstellung:
spielt eine Rolle, ob der DLL von eine Release Version oder Debug Version ist?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.03.2014, 01:56 (Dieser Beitrag wurde zuletzt bearbeitet: 08.03.2014 02:12 von rolfk.)
Beitrag #13

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: C++ Dll in Labview einbinden

Akzeptierte Lösung

(06.03.2014 09:38 )galilio schrieb:  Noch eine Frage Bitte:
Beim DLL erstellung:
spielt eine Rolle, ob der DLL von eine Release Version oder Debug Version ist?

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 Bahn. So wie sich das mir darstellt, ist das Problem nicht so sehr dass Du LabVIEW nicht begreifst, sonderen eigentlich auch wenig Ahnung hast wie man überhaupt C++ Code aus jeder beliebigen nicht C++ Umgebung aufrufen sollte.

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"
#include "MyClass.h"

MyClass::MyClass(int par)
{
    // ??
    Ja das ist Dein Objekt!!! Was Du da im Konstruktor haben musst ist Deine Sache!
}

MyClass::~MyClass(void)
{
    //??
    Dasselbe in grün
}

==> Irgendwo müsste auch noch die Implementation von

int MyClass:: Methode1(int par)
{
    // ??
    return something;
}

int MyClass::Methode2(int par1, double par2)
{
    // ??
    return something;
}

Nun kommt der Wrapper z.B. in file MyClassWrap.cpp

Code:
#include "MyClass.h"

extern "C" __declspec(dllexport) MyClass* createMyClass(int par)
{
     return new MyClass(par);
}
extern "C" __declspec(dllexport) void destroyMyClass(MyClass* ref)
{
     delete ref;
}

extern "C" __declspec(dllexport) int MyClass_Methode1(MyClass* ref, int par)
{
     return ref->Methode1(par);
}

extern "C" __declspec(dllexport) int MyClass_Methode2(MyClass* ref, int par1, double par2)
{
     return ref->Methode2(par1, par2);
}

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.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  LabView DLL in C# einbinden beginner85 2 7.803 27.04.2012 19:48
Letzter Beitrag: rolfk
  C-dll einbinden: LabVIEW hängt eug 16 17.804 27.12.2010 02:34
Letzter Beitrag: eug
  c# DLL in LabVIEW einbinden TSC 3 12.460 07.10.2008 08:13
Letzter Beitrag: TSC
  Visual Basic DLL in LabVIEW einbinden jacket12 2 9.135 10.06.2008 09:54
Letzter Beitrag: jacket12
  DLL in LabVIEW einbinden verflixxt 15 38.662 21.02.2008 21:11
Letzter Beitrag: IchSelbst
  Unrar.dll in LabVIEW einbinden xtro 1 4.537 13.02.2008 09:34
Letzter Beitrag: rolfk

Gehe zu: