000
16.02.2008, 10:55 Uhr
cplusanfaenger
|
Hallo, Dies ist mein erste Frage hier im Forum und ich bin mir nicht sicher, ob ich die frage im richtigen Forum stelle. Also: Ich bin schon mit den wichtigsten Funktionen von C++ bekannt. Nun wollte ich gerne mal lernen, wie man eine Dll erstellt, leider habe ich keine Hinweise darüber bekommen, wie man dies mit devcpp(Mingw) macht. Bei Projekten habe ich einfache eine Dll erstellt: dll.h
C++: |
#ifndef _DLL_H_ #define _DLL_H_
#if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else /* Not BUILDING_DLL */ # define DLLIMPORT __declspec (dllimport) #endif /* Not BUILDING_DLL */
class DLLIMPORT DllClass { public: DllClass(); virtual ~DllClass(void); void Hallo();
private:
};
#endif /* _DLL_H_ */
|
dllmain.cpp
C++: |
/* Replace "dll.h" with the name of your header */ #include "dll.h" #include <windows.h> #include <iostream> using namespace std;
DllClass::DllClass() {
}
DllClass::~DllClass () {
}
void DllClass::Hallo() { cout<<"Hallo";
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break;
case DLL_PROCESS_DETACH: break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break; }
/* Returns TRUE on success, FALSE on failure */ return TRUE; }
|
Dann habe ich versucht, die Funktion Hallo in einer Konsolenanwendung zu verwenden, aber dies funktioniert nicht:
C++: |
#include <cstdlib> #include <iostream> #include <windows.h> #include "dll.h"
using namespace std;
int main() { HINSTANCE hLib = LoadLibrary("DLL.dll"); if (hLib!=NULL) { cout<<"Kein Fehler\n"; DllClass test; test.Hallo(); } else{cout<<"Fehler";} system("PAUSE"); return EXIT_SUCCESS; }
|
Der Compiler zeigt folgende Fehlermeldungen: [Linker Error] undefined reference to `_imp___ZN8DllClassC1Ev' [Linker Error] undefined reference to `_imp___ZN8DllClass5HalloEv' [Linker Error] undefined reference to `DllClass::~DllClass()' [Linker Error] undefined reference to `DllClass::~DllClass()'
Was muss ich den ändern, um die Funktion DllClass::Hallo() aufrufen zu können?
Ich bin für jede Hilfe dankbar |