2013-03-19 14 views
6

sto usando Visual Studio 2012.Includere libreria statica all'interno di una direttiva del preprocessore

ho usato molte volte le direttive del preprocessore come

#ifdef something 
     #include<some_header.h> 
#else 
     #include<other_header.h> 
#endif 

Mi chiedevo se è possibile collegare una libreria statica in un simile modo:

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

la questione, è venuto dal soggetto del mio previous question: ho due librerie statiche lib1.lib, lib2.lib (non il loro codice), senza spazi dei nomi, con la stessa funzione-prototipi, ma con diverse implementazioni.

+0

Quello che stai chiedendo è follia. Due librerie non significano nulla se non hanno le stesse firme di metodo, e se hanno le stesse firme di metodo, questa dovrebbe probabilmente essere un'impostazione di runtime che viene capovolta (come la registrazione o altre informazioni di debug) –

+2

@ RichardJ.RossIII è una situazione perfettamente valida. Ad esempio, collegamento alla libreria di debug e alla libreria di rilascio. Di solito non viene eseguito da #pragmas ma tramite la configurazione del progetto. – SomeWittyUsername

risposta

7

Se si sta usando MSVC si può fare

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

In GCC non si può fare questo.

Problemi correlati