Also eine Bibliothek ist eine .lib datei. (kommt von Library). Wenn du eine DLL benutzen willst für deine Engine (kann ichz dir auch nur empfehlen), erstellst du mit Visual C++ 6 oder was auch immer eine "Win32 Dynamic Link Libraray (DLL)" (bei anderen Versionen müsste es so ähnlich klingen)
Wenn du die DLL durch die DLL-Main funktion definiert hast, z.B.
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//----------------------------------------------------------------------------------------
bool APIENTRY DllMain(HMODULE hModule, DWORD dwReasonFoCall, LPVOID pvReserved) {
// Jetziges DLL Handle übergeben
e_g_DLL_Handle = hModule;
switch(dwReasonFoCall) {
case DLL_PROCESS_DETACH:
// Engine herunterfahren, wenn dies noch nicht passiert ist
if(e_g_bInitCalled == true && e_g_bExitCalled == false) {
Exit();
}
break;
}
return true;
}
|
wird im Debug - Ordner normalerweise automatisch eine Lib Datei erzeugt.
Und eine DLL, die du in deinen Windows\System Ordner (Windows\System) kopierst
Wenn du dann mit einer anderen Anwendung auf deine Engine zugreifen willst, musst du unter Extras->Optionen (zumindest bei Visual C++ 6) die Pfade einstellen (Bibliothekspfad, wo deine Lib Datei zu finden ist und Include Pfade, wo deine Include Dateien zu finden sind)! (steht alles im Buch)
unter Projekte->Einstellungen Registerkarte 'Linker' siehst du in einem Eingabe feld den Eintrag 'kernel32.lib, ...." und diverse andere Bibliotheken. füge nun am besten noch vor "kernel32.lib deine Bibliothek ein + Leerzeichen also:
test.lib kernel32.lib ....
dann noch in deine Anwendung, die auf die Engine zugreifen soll:
ein #inlude hinein (zu deiner Header Datei für die Engine), die alle anderen Dateien beinhaltet. Beispiel folgt:
engine.h -> Das ist unserer "Hauptheader", er fügt alles andere ein
vector2D.h -> Header für 2D Vektoren
vector3D.h -> Header für 3D Vectoren
engine.cpp -> Cpp Datei für DLL-Main
vector2D.cpp -> Cpp Datei für vec 2D
vector3D.cpp -> Cpp Datei für vec 3D
Inhalt der engine.h:
#include "vector2D.h"
#include "vector3D.h"
//
alle anderen "Bestandteile unserer Engine" werden eingefügt
// -----------------------------------------------
Inhalt vector2D.h
// Definitionen........
KEIN Include zu engine.h oder vector3D!
// -----------------------------------------------
Inhalt vector3D.h
// Definitionen........
KEIN Include zu engine.h oder vector2D!
// -----------------------------------------------
Inhalt engine.cpp
#include "engine.h" // bzw. <engine.h>
// -----------------------------------------------
Inhalt vector2D.cpp
#include "engine.h" // bzw. <engine.h>
// Definitionen........
// -----------------------------------------------
Inhalt vector3D.cpp
#include "engine.h" // bzw. <engine.h>