Dieses Thema hat akzeptierte Lösungen:
Labview Import / DLL debuggen
|
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!
18.09.2015, 18:38
|
galilio
LVF-Gelegenheitsschreiber
Beiträge: 175
Registriert seit: Mar 2014
2015
2013
EN
Schweiz
|
RE: Labview Import / DLL debuggen
(17.09.2015 17:35 )galilio schrieb: Hallo Rolf,
Danke für deinen Tipp.
Ich habe es jetzt meine Dammy Projekt so angepasst:
Header File:
Code:
#pragma once
#ifdef __cplusplus
#endif
extern "C"__declspec(dllexport) void* createWrapper(double a, double b);
extern "C"__declspec(dllexport) void destoryWrapper(void *instance);
extern "C"__declspec(dllexport) double Add(void *instance, double a, double b);
.....
#ifdef __cplusplus
#endif
Source Code:
Code:
#include "stdafx.h"
#include "MyClass.h"
#include "C_DllWrapper.h"
extern "C"__declspec(dllexport) void* createWrapper(double a, double b)
{
return new MyClass(a, b);
}
extern "C"__declspec(dllexport) void destoryWrapper(void *instance)
{
MyClass *myClass = static_cast<MyClass*>(instance);
delete myClass;
}
extern "C"__declspec(dllexport) double Add(void *instance, double a, double b)
{
MyClass *myClass = reinterpret_cast<MyClass*>(instance);
return myClass->Add(a, b);
}
....
static_cast<> und reinterpret_cast<> brauche ich um das Pointer Objekt MyClass
zu casten sonst bekomme ich stets eine Fehlermeldung
Diesem Code kann ich mit Visual Studio und LabVIEW in debug Modus durchlaufen.
Es ist keine Fehler aufgetreten.
Nun habe ich Verständnis Frage:
Als erste muss ich eigentlich das Objekt MyClass erst erzeugen können und das tue in dem ich
die Funktion createWrapper(double a, double b) aufrufe (damit wird das Objekt erzeugzt).
Bis hier ist alles okay.
Wenn ich diese Funktion z.B. :
header Files:
Code:
extern "C"__declspec(dllexport) double Add(void *instance, double a, double b);
Source Files:
Code:
extern "C"__declspec(dllexport) double Add(void *instance, double a, double b)
{
MyClass *myClass = static_cast<MyClass*>(instance);
return myClass->Add(a, b);
}
aufrufe, wie kann ich meinem Objekt (Pointer) "MyClass" auf LabVIEW Seite für dieses Funktion bekannt machen?
|
|
|
| |
Nachrichten in diesem Thema |
RE: Labview Import / DLL debuggen - galilio - 18.09.2015 18:38
|