ich habe nun mal meine engine als dll verpacken wollen und habe das auch ohne probleme hinbekommen. nur eine sache würde ich gerne wissen, ob das normal so ist oder ob ich wo was verkehrt gemacht habe. erstmal die hauptheader:
|
C-/C++-Quelltext
|
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
37
|
/*--------------------------------------------------------------------------------------------
aice.h
deklaration zu aice.cpp. verbindung zur Engine per dll
--------------------------------------------------------------------------------------------*/
//--Defines-----------------------------------------------------------------------------------
#pragma once
#ifdef AICE_EXPORTS
#define AICE_API __declspec(dllexport)
#else
#define AICE_API __declspec(dllimport)
#endif
#define DIRECTINPUT_VERSION (0x0800)
//--Header ausserhalb-------------------------------------------------------------------------
#include <windows.h>
#include <ddraw.h>
#include <dinput.h>
#include <stdio.h>
#include <fmod.hpp>
#include <time.h>
//--Header der Engine-------------------------------------------------------------------------
#include <directdraw.h>
#include <directinput.h>
#include <fonts.h>
#include <logdata.h>
#include <shell.h>
#include <sound.h>
#include <surfaces.h>
#include <utils.h>
|
nun werden ja bei jeder cpp-datei die zur engine gehören nur dieser header inkludiert, wodurch jede cpp.-datei zugriff auf alles hat, soweit so gut.
nun nutzten viele meiner klassen innerhalb der engine eine andere klasse(names CGlobals) aus der engine, in der globale Objekte gespeichert werden (als static). sie steht in der utils.h.
nun als ich das ganze so kompliliert habe, gab es genau deswegen probleme, dass er die entsprechende Klasse (CGlobals) nicht finden kann. aber es werden doch alle header aus der hauptheader geholt, deswegen verstehe ich nicht, dass er die klasse nicht kennt. ich meine die ganzen directx-klassen findet er ja auch.
deswegen habe ich zusätzlich bei jeder engine-header die utils.h inkludieren mussen und ich bin der meinung das muss ja nich sein
habe ich irgendwas falsch verstanden und es muss ein fehler sein? oda ist das normal?