ich möchte eine dll erstellen und dort eine Klasse exportieren. Mit Funktionen klappt alles prima, bei Klassen bekomme ich einen Linkerror.
Hier ist mein Code
die Header-Datei der DLL:
Code: Alles auswählen
#ifdef BUILD_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif
extern "C"
class EXPORT CAdder
{
public:
CAdder();
~CAdder();
int AddN(int iValue, int iN);
}; // class CAdder
Code: Alles auswählen
#include <stdio.h>
#include "example_dll.h"
CAdder::CAdder() { ; }
CAdder::~CAdder() { ; }
int CAdder::AddN(int iValue, int iN) { return iValue + iN; }
Das Programm, welches die DLL benutzt lautet
Code: Alles auswählen
int main ()
{
//Windows handl
HINSTANCE hdll;
// LoadLibrary
hdll = LoadLibrary("addTest.dll");
CAdder a;
printf("--> 6 + 10 = %d\n", a.AddN(6, 10));
return 0;
} // main
Die Fehlermeldung des Linkers lautet:
Code: Alles auswählen
C:/Workspace/dllTest/Debug/../hello.cpp:40: undefined reference to `_imp___ZN6CAdderC1Ev'
C:/Workspace/dllTest/Debug/../hello.cpp:41: undefined reference to `_imp___ZN6CAdder4AddNEii'
C:/Workspace/dllTest/Debug/../hello.cpp:43: undefined reference to `_imp___ZN6CAdderD1Ev'
C:/Workspace/dllTest/Debug/../hello.cpp:43: undefined reference to `_imp___ZN6CAdderD1Ev'
Danke und Gruß
Andreas