Seite 1 von 1

[C++] Inter-library dependencies

Verfasst: 29.08.2012, 11:22
von Herror
Hey,
bin mal seit langem wieder am Programmieren und bin auf ein Problem gestoßen das mir neu ist :shock:

Ich Habe vor eine Engine mit DirectX11 zu schreiben und zu der Engine ein Framework.
Der Endbenutzer soll im Idealfall nur das Framework Linken und von einer Klasse ableiten und die vorgegebenen Funktionen definieren.

Jetzt habe ich ein Problem. Ziel ist es ja wie gesagt, dass der Endbenutzer nur das Framework einbinden soll und sich nicht mehr um den DirectX kram kümmern muss.
Den DirectX11Renderer habe ich schweren Herzens in eine DLL verfrachtet, auch wenn das bedeutet, das ich viele Virtuelle aufrufe habe.
Nun wollte ich eine Mathebibliothek schreiben und habe dort die DirectX Matrix Funktionen in den CPP-dateien verwendet, da sie ja ziemlich schnell und optimiert sind.

Mein Problem ist jetzt, dass wenn ich das Framework einbinde im Projekt und die Mathefunktionen verwenden will, möchte der Compiler, dass ich die DirectX Library Linke.
Hoffe ich habe das nicht zu verworren erklärt aber so nochmal in kurzen worten:

Core Library enthält Matheklassen und in den CPP Dateien habe ich DirecX Funktionen verwendet
-> Framework bindet Core Library ein
-> Endprojekt bindet Framework ein und verlangt von mir die DirectX Library. (Nicht aufgelöste externe symbole)

Gibt es eine Möglichkeit diese Abhängigkeiten in die Library reinzukompilieren, so dass ich die Abhängigkeiten nicht mehr im Endprojekt einbinden muss?
Hab schon ne weile danach gegooglet und in den Projekteinstellungen gestöbert aber bis jetzt hat alles was ich probiert habe nicht funktioniert.

Wär geil wenn mal jemand ein ähnliches Problem hatte und mir dabei helfen kann :)

Re: [C++] Inter-library dependencies

Verfasst: 29.08.2012, 13:06
von Herror
Habs gerade rausgefunden, für die die wissen wollen wie das funktioniert:

Ich habe eine Framework.lib und in die möchte ich alle anderen Libraries die ich verwende reinkompilieren.
Dafür habe ich unter
Projekteinstellungen->Configuration Properties->Librarian->Command Line
folgendes eingegeben:
/OUT:"..\..\Lib\Framework.lib" Renderer.lib Core.lib d3d10.lib d3dx10.lib

/OUT:"..\..\Lib\Framework.lib" ist dabei der Pfad und der Dateiname wo ich die Library hin haben will und alle darauf folgenden lib Dateien werden in die Framework.lib mit reinkompiliert.

hab allerdings gelesen, dass das gegen die Lizenzbedingungen verstoßen kann, deshalb werde ich mich dahingehend weiter informieren müssen.

Re: [C++] Inter-library dependencies

Verfasst: 29.08.2012, 13:13
von Matthias Gubisch
Wenn dus nicht über die Commandline machen willst:

Projekteinstellungen->Configuration Properties->Liberian->General->Additional Dependencies sollte das gleiche bewirken

Re: [C++] Inter-library dependencies

Verfasst: 29.08.2012, 13:28
von Herror
tatsache ^^
Danke :)

verwende sonst immer:
#pragma comment(lib, "Libname.lib")

das hat wohl zu den Problemen geführt