PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Struct Definition in DLL ist fehlerhaft ???


Einfachkrank
2003-04-27, 13:37:21
Hi,

ich habe ein sehr seltsames Problem und zwar habe ich einer Headerdatei ein struct deklariert. Diese Header Datei wird zum Erstellen einer DLL und zum einbinden derselben DLL genutzt...
Jetzt habe ich in dem struct fünf verschieden Klassen angegeben wobei nur vier davon später zu sehen sind, ca so:
typedef struct TEST_TYPE
{
DEFINIERTE_KLASSE1 Klasse1;
DEFINIERTE_KLASSE2 Klasse2;
DEFINIERTE_KLASSE3 Klasse3;
DEFINIERTE_KLASSE4 Klasse4;
DEFINIERTE_KLASSE5 Klasse5;
}TEST;
Wenn ich jetzt später in nem Programm mir ein son TEST-Ding anlege, dann erkennt er nur die ersten vier Klassen, aber nicht die fünfte ???Womit kann das zusammen hängen ?

MFG Einfachkrank

Demirug
2003-04-27, 16:09:17
Gibt es irgendwelche Fehlermeldungen?

Einfachkrank
2003-04-27, 16:28:53
Nee, leider gar nichts. Der Compiler meckert einfach nur, dann wenn ich die fünfte der vier Klassen in der Struktur verwenden will. Laut seiner Meinung, ist sie kein Mitglied der Struktur, aber ich sehe das etwas anders :)
Hier ist etwas Code:

class CM3D_DLL_C CM3DTools
{
private:
HDC hdc;
FILE *report;

public:
void CreateTools(CM3DWindowGL *CWindow);

bool CreateBitmapFont(char *fontname, int fontSize, unsigned int *Font);
void PrintString(unsigned int base, char *string);
void ClearFont(unsigned int base);

unsigned char *LoadBitmap(char *fileName, BITMAPINFOHEADER *bitmapHeader);
bool SaveBitmap(char *fileName, const int width, const int height);

void GenerateTexture(char *fileName, TEX *texture);
void ClearTexture(TEX *texture);
};


class CM3D_DLL_C CM3DWindowTool
{
private:
HDC MainHdc;
HINSTANCE MainHinst;
HWND MainHwnd;
int NumWorkWindows;

SOURCEMATRIX CheckSourceFile(FILE *file);

public:
bool *WorkWindowsActive;
WORKWINDOW *WorkWindows;

CM3DWindowTool(void);
~CM3DWindowTool(void);

void CreateWindows(CM3DWindowGL *CWindow, const int NumWorkWindows);
void DestroyWindows(void);

void CreateWorkWindow(char Index, const int NumButtons, char *CaptionSource, WINSIZE WinSize);
void DestroyWorkWindow(char Index);

void WindowVisible(char Index, bool Visible);
};

/******************************************************************************** ***************/
/******************************************************************************** ***************/
// declarations of M3D DLL structs
typedef struct M3DAPPLICATION_TYPE
{
CM3DWindowGL CWindow;
CM3DSound CSound;
CM3DInput CInput;
CM3DTools CTools;
CM3DWindowTool CWindowTools;
}M3DAPPLICATION,M3DAPP;
Die ersten drei Klasen sind in einer übergeordneten Header definiert. Und das CM3D_DLL_C Ding, soll für DLL Export und DLL Import sein, was ich afaik von dir erklärt bekommen habe :)
Und wenn ich dann auf die CWindowTool Klasse zugreifen möchte, dann erkennt der Compiler die nicht an, aber die CTools schon, was ich überhaupt nicht vertehe... :(

Demirug
2003-04-27, 16:34:15
Ändere bitte einfach mal den namen der Variable. Das sollte zwar eigentlich keien Auswirkung haben aber ich habe schon einiges erlebt.

Und dann tausche mal die beiden Klassen gegeneinader aus

Aus


CM3DTools CTools;
C3DWindowTool CWindowTools;


mache


C3DWindowTool CWindowTools;
CM3DTools CTools;


Sind zwar jetzt nur blinden geschosse aber irgendwo muss man ja anfangen: ;)

Einfachkrank
2003-04-27, 18:02:45
Gut, Ok, hab ich versucht, aber war leider erfolglos :D
Das ist son richtiger Scheißhausfliegenfehler :D
Was könnte ich denn noch machen ?

stabilo_boss13
2003-04-28, 08:00:54
Also ich habe auch den Verdacht einer fehlerhaften Bezeichnung.

Nenne mal CM3DWindowTool und CM3DWinTool um.

Immer noch der Fehler?

Einfachkrank
2003-04-28, 16:18:09
Das hat auch nix gebracht. Ich hab dann beider Header Dateien in eine gefasst und beide Quellcode Dateien in eine, dann gings plötzlich ??? Sau merkwürdig !!!

MFG Einfachkrank