Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

1

15.03.2004, 16:46

Wie erstelle ich eine DLL in Visual C++ ?

Hallo,

Ich habe vor meine Engine in eine DLL zu packen wie die TriBase Engine. Nur ein Problem ich hab noch nie etwas mit einer DLL gemacht unc ich wollte fragen ob mir jemand sagen könnte wie ich anfangen muss und wo ich was hinschreiben muss ?

Wäre sehr nett danke schonmal im Voraus :) !!
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

2

15.03.2004, 17:30

hoffentlich hilft dir das weiter:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/dynamic_link_libraries.asp
Do, ut des!
Ceterum censeo, carthaginem delendam esse

3

15.03.2004, 21:46

Das wird auch sehr schön in Davids Buch erklärt, ziemlich weit hinten. So habs ich jedenfalls gelernt.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

16.03.2004, 07:14

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  
{
};

Anonymous

unregistriert

5

30.06.2005, 09:07

FAQ Ende

Werbeanzeige