Hallo
Ich hab normalerweise keine Probleme beim erstellen und linken von statischen libs (im visual studio). Jetzt habe ich aber eine statische Bibliothek erstellt, die selbst eine weitere statische Bibliothek linkt. Funktioniert auch gut, nur wenn ich diese bibliothek nun verwenden will, gibt es fehler (wie z.B. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int).
Ich hab also eine statische bibliothek gemacht (Engine.lib), die auf DirectX libs verweist (z.B. d3d9.lib). Das ganze sieht folgendermassen aus:
Engine:
Includeverzeichnisse: ...\DXSDK\Include
Lib-verzeichnisse: ...\DXSDK\Lib\x86
Engine.h:
#pragma comment( lib, "d3d9.lib" )
#include <d3d9.h>
...
Game:
Includeverzeichnisse: ...\DXSDK\Include und ...\Engine\Include
Lib-verzeichnisse: ...\Engine\Lib
Game.cpp:
#pragma comment( lib, "Engine.lib" )
#include <Engine.h>
Wo liegt das problem??
Gruss
[C++] Statische Bibliothek linken
-
- Beiträge: 4
- Registriert: 02.02.2010, 21:56
- Wohnort: Zürich, Schweiz
Re: [C++] Statische Bibliothek linken
Nur ne Vermutung: Das sind doch Compilerfehler, ja? Dann kann es gar nicht am Linken liegen, da der Linker nur aufgerufen wird, wenn der Compiler durchgelaufen ist.
Zeig mal den Code, auf den der Fehler verweist.
Zeig mal den Code, auf den der Fehler verweist.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
-
- Beiträge: 4
- Registriert: 02.02.2010, 21:56
- Wohnort: Zürich, Schweiz
Re: [C++] Statische Bibliothek linken
Ja das stimmt. Aber da der code funktioniert, wenn ich die engine nicht als statische bibliothek verwende, hat es doch irgendwie mit der include reihenfolge oder so zu tun aber da lässt sich irgendwie nichts machen....
bool BoxBoxTest( const VECTOR& Min1, const VECTOR& Max1, const VECTOR& Min2, const VECTOR& Max2 );
hier wird z.B. ein fehler (der vom Beispiel oben) angezeigt. Diese funktionsdefinition ist in engine.h. Etwas höher oben steht typedef D3DXVECTOR3 VECTOR; und darüber sind dann die Zeilen
#pragma comment( lib, "d3d9.lib" )
#include <d3d9.h> -> d.h. D3DXVECTOR3 ist bekannt...
Ich habe wirklich gerade keine ahnung was das sein könnte....
bool BoxBoxTest( const VECTOR& Min1, const VECTOR& Max1, const VECTOR& Min2, const VECTOR& Max2 );
hier wird z.B. ein fehler (der vom Beispiel oben) angezeigt. Diese funktionsdefinition ist in engine.h. Etwas höher oben steht typedef D3DXVECTOR3 VECTOR; und darüber sind dann die Zeilen
#pragma comment( lib, "d3d9.lib" )
#include <d3d9.h> -> d.h. D3DXVECTOR3 ist bekannt...
Ich habe wirklich gerade keine ahnung was das sein könnte....
- kimmi
- Moderator
- Beiträge: 1412
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: [C++] Statische Bibliothek linken
Das sind zwei verschiedene Paar Schuhe. Die Include's werden weit vor dem Linken eingebunden. Aber du kannst das recht schnell verifizieren, in dem du deine Pragma-Anweisung auskommentierst. Tritt der Fehler jetzt noch immer auf? Wenn ja: s lag an deinen Include's und nicht an dem Pragma, was ich ebenfalls vermute.
Gruß Kimmi
Gruß Kimmi
-
- Beiträge: 4
- Registriert: 02.02.2010, 21:56
- Wohnort: Zürich, Schweiz
Re: [C++] Statische Bibliothek linken
Ich hab das Problem herausgefunden. Ich hab in der Engine eine Include datei mit dem unglücklichen Namen math.h gehabt... Vielen Dank für die Hilfe