Quando uso Visual Studio 2012, con il collegamento automatico, non ho bisogno di aggiungere manualmente le librerie boost/POCO/python, dovrebbero essere aggiunte automaticamente. E se mi manca qualsiasi libreria, ricevo un messaggio del genere:In che modo il potenziamento del collegamento automatico rende la scelta?
LINK : fatal error LNK1104: cannot open file 'libboost_system-vc110-mt-1_55.lib'
Ma come si sa quale file voglio collegare? Forse voglio collegare in modo dinamico, utilizzando boost_system-vs110-mt-1_55.lib, o voglio uno con gd o sgd nel nome?
Come si fa a scegliere?
Il problema è che il mio programma sta cercando librerie libboost_ ... (cioè statiche), quando cerco sistema, thread ed ecc., Ma vuole boost_ (cioè dinamico) per python, e io non capisco perché?
se "auto-linkando" si riferisce all'uso di DLL, ciò non ti libera dal collegamento di .libs. Per utilizzare le DLL in fase di runtime, è necessario conoscere il contenuto di queste DLL in fase di compilazione, ed è qui che entrano in gioco i file .lib. Per quanto riguarda la versione, il runtime e mt/md (che tipo di modulo di runtime stai compilando, puoi vederlo nelle opzioni di VS per il tuo progetto), dovresti prima ispezionare il tuo progetto per decidere. –
Sì, ho capito come fare una scelta da solo, compilando quel progetto usando MinGW non ho alcun problema. Ma Visual Studio ha scelto su se stesso, quindi NON POSSO scegliere, lo rende per me. E mi chiedo perché faccia una scelta del genere. La mia domanda è davvero: in che modo Visual Studio rende la scelta e come posso gestirla? – Arkady
Puoi controllarlo anche da VS, dai un'occhiata al Linker-> riquadro Input per i .libs inclusi durante il collegamento e anche nelle directory Linker-> General-> Additional linking (IIRC) –