2013-03-19 19 views
6

ich Visual Studio bin mit 2012Fügen Sie statische Bibliothek innerhalb einer Präprozessordirektive

ich wie

oft Präprozessordirektiven verwendet
#ifdef something 
     #include<some_header.h> 
#else 
     #include<other_header.h> 
#endif 

ich mich gefragt, ob möglich ist, eine statische Bibliothek in einer ähnlichen verlinken übrigens:

#ifdef something 
     // use some_library.lib 
#else 
     // use other_library.lib 
#endif 

die Frage kam aus dem Thema meiner previous question: ich habe zwei statischen Bibliotheken lib1.lib, lib2.lib (nicht ihren Code) ohne Namensraum, mit die gleiche Funktion - Prototypen, aber mit unterschiedlichen Implementierungen.

+0

Was Sie fragen, ist Wahnsinn. Zwei Bibliotheken bedeuten nichts, wenn sie nicht die gleichen Methodensignaturen haben, und wenn sie die gleichen Methodensignaturen haben, sollte dies wahrscheinlich eine Laufzeiteinstellung sein, die umgedreht wird (z. B. Logging oder andere Debug-Informationen) –

+2

@ RichardJ.RossIII eine absolut gültige Situation. Z. B. Verknüpfung gegen Debug-Bibliothek vs. Release-Bibliothek. Dies geschieht normalerweise nicht über #pragmas, sondern über die Projektkonfiguration. – SomeWittyUsername

Antwort

7

Wenn Sie MSVC verwenden, können Sie tun

#ifdef something 
     #pragma comment(lib,"xxx.lib") 
#else 
     #pragma comment(lib,"zzz.lib") 
#endif 

In GCC können Sie nicht tun.

Verwandte Themen