000
19.06.2003, 13:40 Uhr
~CPlusPlus
Gast
|
Hallo alle zusammen, als erstes schmeiss ich euch mal meinen Code um die Ohren ;)
Dateien der GameEngine.dll GameEngine.h
C++: |
#define GAME_ENGINE_API __declspec(dllexport)
#include <windows.h> #include <iostream>
#define GE_DLL_HANDLE (GetModuleHandle("GameEngine.dll"))
enum GERESULT { GE_OK = 0, GE_ERROR = 1 };
class GAME_ENGINE_API CGameEngine { private: public: static GERESULT geInit(); static GERESULT geExit(); static GERESULT geMessageLoop(); };
|
GameEngine.cpp
C++: |
#include "GameEngine.h"
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: std::cout << "ATTACH"; break; case DLL_PROCESS_DETACH: std::cout << "DETACH"; break; } return TRUE; }
GERESULT CGameEngine::geInit() { std::cout << "Init"; return GE_OK; }
GERESULT CGameEngine::geExit() { std::cout << "\nExit"; return GE_OK; }
GERESULT CGameEngine::geMessageLoop() { std::cout << "\nLoop"; return GE_OK; }
|
Datei der DLL_Access.exe Main.cpp
C++: |
#include <GameEngine.h>
int main() { CGameEngine::geInit(); CGameEngine::geMessageLoop(); CGameEngine::geExit(); return 0; }
|
Mein Problem ist jetzt das der Aufruf geMessageLoop einen Compiler fehler verursacht. Wenn ich versuche die DLL_Access.exe zu Debugen.
Main.obj : error LNK2019: unresolved external symbol "public: static enum GERESULT __cdecl CGameEngine::geMessageLoop(void)" (?geMessageLoop@CGameEngine@@SA?AW4GERESULT@@XZ) referenced in function _main Debug/DLL_Access.exe : fatal error LNK1120: 1 unresolved externals
Wenn ich den Aufruf von geMessageLoop allerdings weg lasse und Debuge geben die Aufrufe geInit und geExit, einen Text aus. Kann mir vielleicht bitte jemand helfen?
Dann mal noch eine kleine Frage am Rand in der DLLMain wiso geben case DLL_PROCESS_ATTACH und case DLL_PROCESS_DETACH keinen Text aus?
Vielen dank schon einmal im voraus
-- richtigen Code - Tag eingefügt -- Dieser Post wurde am 19.06.2003 um 18:30 Uhr von Uwe editiert. |