Hi, ich hoffe mal du benutzt den Visual C++ Compiler, ich beschreibe alles für Visual C++ .NET Prof. Bei dem 6er müsste aber nahezu alles gleich sein.
Also zuerst gehst du auf
Datei->Neu->Projekt
Dort wählst du "Win 32 Projekt" aus. ATL und MFC brauchst du nicht für deine DLL. Normalerweise. (die Tribase hat auch kein MFC, ATL). Dann öffnet sich ein neuer Dialog. dort gehst du links auf "Anwendungseinstellungen". dort wählst du nun DLL aus. oder Dynamic Link Library. Dann erstellste, am besten ein leeres Projekt.
Nun kannst du loslegen, wichtige Header z.B. für Direct X, Windows u.s.w. einbinden. in der cpp Datei eine DLLMain z.B. so:
|
Quellcode
|
1
|
bool APIENTRY DllMain(HMODULE hModule, DWORD Reason_For_Call, LPVOID lpReserved)
|
|
Quellcode
|
1
2
3
4
5
6
7
8
|
switch(Reason_For_Call) {
case DLL_PROCESS_ATTACH:
// DLL wird hochgefahren
break;
case DLL_PROCESS_DETACH:
// DLL wird runtergefahren
break;
};
|
Dieses Code schnipsel behandel was passiert wenn die DLL verknüpft, also geladen oder beedet wird.
Funktionen stellst du am besten mit deiner eigenen API bereit.
z.B. so
|
Quellcode
|
1
2
3
4
5
|
#ifdef ENGINE_EXPORTS
#define ENGINE_API __declspec(dllexport)
#else
#define ENGINE_API __declspec(dllimport)
#endif
|
Du musst aber aufpassen das vorher entweder im compiler selber oder im Code ein ENGINE_EXPORTS definiert wurde.
Nun eine Funktion:
Prototyp:
|
Quellcode
|
1
|
ENGINE_API bool EineFunktion();
|
Implementation:
|
Quellcode
|
1
2
3
|
ENGINE_API bool EineFunktion() {
return true;
}
|
Klassen sehen dann wie auch structs: so aus
|
Quellcode
|
1
2
3
|
class ENGINE_API E_CClass
{
};
|