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

Anonymous

unregistriert

11

25.02.2003, 15:57

Das sehe ich wohl auch so und in fast jedem Buch steht doch immer das selbe drin. Ich kann mir eben auch nicht vorstellen das klappen kann, wenn ich alles so einfach nach einander runterraspel. Das braucht Erfahrungen und gerade in der Spiele Entwicklung. Ich denke man sollte dabei auf dem Teppich bleiben.

mortl

Frischling

Beiträge: 18

Wohnort: Straubing/Bayern

Beruf: Schüler

  • Private Nachricht senden

12

25.02.2003, 17:04

@David

Könntest du das mit den Klassen und Dll's noch mal erklären? Noch besser wäre ein kleines Codbeispiel, denn das funktioniert bei mir nicht ganz.

Mortl

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

13

25.02.2003, 17:25

War das da oben kein Code?
Erzeuge in Visual C++ ein neues DLL-Projekt und wähle "Eine DLL, die einige Symbole exportiert". Dann kriegst Du ein einfaches Beispielprogramm, das etwas exportiert.

Anonymous

unregistriert

14

25.02.2003, 17:39

@David

ich habe jetzt mal nach Deiner Anleitung eine DLL erzeugt die ein paar Symbole exportiert. Das habe ich jetzt mit der alten VC 6 Version gemacht. Eigentlich arbeite ich immer mit der .NET Version dort geht das so nicht. **JETZT** leuchtet mir nemlich auch einiges ein.

Anonymous

unregistriert

15

25.02.2003, 17:42

@David

ich nehme alles zurück das geht ja doch. Ist aber nicht so offensichtlich, wie in der 6er Version. In .NET heißt das Win 32 Projekt, dort wählt man dann DLL im Manager und dann Symbole exportieren.

Anonymous

unregistriert

16

25.02.2003, 17:47

@mortl

Hier mal ein Beispiel ein solchen DLL :

Die CPP Datei :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// DiReX3D.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
//

#include "stdafx.h"
#include "DiReX3D.h"
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

// Dies ist das Beispiel einer exportierten Variablen
DIREX3D_API int nDiReX3D=0;

// Dies ist das Beispiel einer exportierten Funktion
DIREX3D_API int fnDiReX3D(void)
{
    return 42;
}

// Dies ist der Konstruktor einer Klasse, die exportiert wurde.
// Siehe DiReX3D.h für die Klassendefinition
CDiReX3D::CDiReX3D()
{ 
    return; 
}


Die H Datei :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/ Folgender ifdef-Block ist die Standardmethode zum Erstellen von Makros, die das Exportieren 
// aus einer DLL vereinfachen. Alle Dateien in der DLL werden mit dem DIREX3D_EXPORTS-Symbol
// kompiliert, das in der Befehlszeile definiert wurde. Das Symbol darf nicht für ein Projekt definiert werden,
// das diese DLL verwendet. Alle anderen Projekte, deren Quelldateien diese Datei beinhalten, erkennen 
// DIREX3D_API-Funktionen als aus einer DLL importiert, während die DLL mit diesem Makro
// definierte Symbole als exportiert ansieht.
#ifdef DIREX3D_EXPORTS
#define DIREX3D_API __declspec(dllexport)
#else
#define DIREX3D_API __declspec(dllimport)
#endif

// Diese Klasse wird aus DiReX3D.dll exportiert
class DIREX3D_API CDiReX3D {
public:
    CDiReX3D(void);
    // TODO: Fügen Sie hier Ihre Methoden ein.
};

extern DIREX3D_API int nDiReX3D;

DIREX3D_API int fnDiReX3D(void);

Anonymous

unregistriert

17

25.02.2003, 17:51

@David

hey David jetzt habe ich das mit der API Geschichte auch gerafft, nachdem ich es gesehen hatte. Auch das mit den Variablen und den Klassen ist jetzt einleuchtent. Booo.. Cool.

mortl

Frischling

Beiträge: 18

Wohnort: Straubing/Bayern

Beruf: Schüler

  • Private Nachricht senden

18

25.02.2003, 18:48

Ok, ich hab's gecheckt. Wie kann ich aber jetzt in einem anderen Projekt eine Instanz der KLasse CDiReX3D anlegen?

Mortl

Anonymous

unregistriert

19

25.02.2003, 21:57

Soweit bin ich auch noch nicht, vielleicht kann David da weiter helfen. Habe diesen Code auch nur mit .NET Studio erstellen lassen. Bin eben auch noch Anfänger.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

20

25.02.2003, 22:00

Du musst einfach die Header-Datei einbinden und das Projekt mit der LIB-Datei linken. Mehr nicht.

Werbeanzeige