[C++] Statische Bibliothek linken

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
DominicMoret
Beiträge: 4
Registriert: 02.02.2010, 21:56
Wohnort: Zürich, Schweiz

[C++] Statische Bibliothek linken

Beitrag von DominicMoret »

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
Benutzeravatar
Jonathan
Establishment
Beiträge: 2658
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [C++] Statische Bibliothek linken

Beitrag von Jonathan »

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.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
DominicMoret
Beiträge: 4
Registriert: 02.02.2010, 21:56
Wohnort: Zürich, Schweiz

Re: [C++] Statische Bibliothek linken

Beitrag von DominicMoret »

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....
Benutzeravatar
kimmi
Moderator
Beiträge: 1412
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: [C++] Statische Bibliothek linken

Beitrag von kimmi »

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
DominicMoret
Beiträge: 4
Registriert: 02.02.2010, 21:56
Wohnort: Zürich, Schweiz

Re: [C++] Statische Bibliothek linken

Beitrag von DominicMoret »

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
Antworten