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!

03.03.2014, 19:43 (Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2014 19:53 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

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

Akzeptierte Lösung

(03.03.2014 14:13 )galilio schrieb:  Das einbinden



in diesem DLL file sind Klassen geht es auch ohne eine Wrapper zu schreiben?

Nein! Die Call Library Node kann nur globale exportierte C Funktionen einbinden. Grundsatzlich hast Du damit zwei Möglichkeiten.

1) Alle interessanten Objektmethoden wrappen. Das braucht keine seperate DLL zu sein aber kann auch bei der bestehenden DLL beigefügt werden. Etwas in dieser Art:

Mit der Klassendefinition wie dieser:

Code:
class MyClass
{
     pulic:
          MyClass(int par);
          int Method1(int par);
          int Method2(int par1, double par2);
     private:
          ............
};

würde das ungefähr folgenden extra Code geben:

Code:
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_Method1(MyClass* ref, int par)
{
     return ref->Method1(par);
}

extern "C" declspec(dllexport) int MyClass_Method2(MyClass* ref, int par1, double par2)
{
     return ref->Method2(par1, par2);
}

Die MyClass* Parameter (und Returnwerte) bitte in der Call Library Node als Pointer sized Integer konfigurieren, dann geht's sowohl für Windows 32 bit und 64 bit DLLs automatisch korrekt.

2) Den C++ code in ein ActiveX umwandeln und dann als ActiveX Objekt in LabVIEW einbinden.

Beachte dass LabVIEW nicht die einzige Prograqmmierumgebung ist bei der Du mit dem Einbinden von C++ Code Probleme hast. C#, Matlab, Delphi und so ziemlich jede andere Programmierumgebung die nicht C++ ist hat hier dieselben Probleme. Eigentlich kann man sagen dass C++ nur wirklich zu sich selber komptibel ist und da sogar nur zu Code das mit dem gleichen Compiler erzeugt wurde, denn es besteht keinerlei binärkompatibler C++ Standard.

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
30
Antwort schreiben 


Nachrichten in diesem Thema
C++ Dll in Labview einbinden - galilio - 03.03.2014, 09:44
RE: C++ Dll in Labview einbinden - rolfk - 03.03.2014 19:43
RE: C++ Dll in Labview einbinden - jg - 04.03.2014, 20:01

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

Gehe zu: