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 

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
Beitrag #17

galilio Offline
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?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Labview Import - galilio - 22.08.2014, 22:31
RE: Labview Import - galilio - 24.08.2014, 08:09
RE: Labview Import - jg - 24.08.2014, 08:43
RE: Labview Import - galilio - 24.08.2014, 10:09
RE: Labview Import / DLL debuggen - galilio - 18.09.2015 18:38

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  USB Relay DLL import hansi9990 3 10.267 02.09.2019 09:15
Letzter Beitrag: hansi9990
  DLL Import externe Struktur in Header bekommen hansi9990 15 24.718 30.09.2016 17:20
Letzter Beitrag: hansi9990
  aus einem Library Import Installer machen galilio 5 13.155 04.04.2016 09:32
Letzter Beitrag: galilio
  DLL Import automatisieren CS 3 8.111 13.02.2015 10:53
Letzter Beitrag: CS
  Import Assistent findet Funktionen nicht TDO 1 5.669 11.12.2014 16:24
Letzter Beitrag: jg
  dll Import richtig verstanden? Gruenschnabel 6 8.350 19.09.2014 10:25
Letzter Beitrag: DATAAHEAD

Gehe zu: