2014-10-22 2 views
10

Sono abbastanza nuovo per VC++ e Boost. Il mio problema è che voglio usare Boost 1.56.0 nel mio progetto VC++ Visual Studio 2013 (quindi uso vc120).codice vC++ vs2013 con boost alimentato da nuget non crea

Ho installato Boost via NuGet (https://www.nuget.org/packages/boost/). Tutto sembra essere a posto, ma quando provo a costruire il mio progetto si dice:

Fatal error LNK1104: Impossibile aprire il file "libboost_thread-vc120-mt-gd-1_56.lib".

Sai dove si trova esattamente il problema e come posso risolverlo?

Ho pensato che l'installazione di un pacchetto utilizzando NuGet farà tutto il lavoro per far funzionare le cose da solo. So che il linker non riesce a trovare il file lib (in realtà non c'era affatto un processo di compilazione). Ma non so come posso risolvere questo problema.

Penso che non sia una buona idea compilare manualmente Boost con VC120 e aggiungere la cartella lib ai percorsi aggiuntivi del linker. Perché dovrei usare NuGet allora?

Qualsiasi aiuto è benvenuto - Sto provando e cercando su Internet per così tante ore e non ho potuto risolvere il problema.

Grazie, Stefan

+0

Avete provato ad aggiungere la directory per il file '.lib' nel' Progetto Properties'? – Nard

+0

Grazie per il tuo commento. Bene, in realtà non ci sono file .lib. Ho pensato che quando installo Boost con NuGet l'intero processo di costruzione sarà automatizzato. I file di origine Boost si trovano nella cartella packages \ boost.1.56.0.0 \ lib \ native \ include \ boost. Ho caricato tutto su [GitHub] (https://github.com/swank-rats/image-processing). vi sono altri pacchetti di cartelle \ boost.1.56.0.0 \ build \ native che include boost.targets, dove la cartella \ include originale (menzionata sopra) è contrassegnata come AdditionalIncludeDirectories per ClCompile. – Skully

risposta

2

Sembra che l'ultima versione di NuGet per spinta non include tutti i lib e pacchetto dll file (source).

È necessario installare boost_thread del tutto.

+0

Grazie - ma poi ho un altro problema dato che manca la libreria ASIO. Questo è il motivo per cui ho usato il pacchetto Boost di NuGet menzionato sopra. :/ – Skully

+0

Questa è un'altra domanda e problema. Ad ogni modo dovresti trovare tu stesso le dipendenze mancanti con google. –

0

Poiché il pacchetto NuGet di Boost non contiene più i file lib, poiché il pacchetto sta diventando troppo grande, ho deciso di creare Boost da solo.

Ho seguito queste istruzioni: Build Boost for Visual Studio - leggi anche il secondo post!

L'ho visto troppo tardi, ma forse è utile per qualcun altro: There are pre-build Boost installer! Qui puoi scaricare un programma di installazione, che installerà Boost (della versione specifica) per 32/64 bit (a seconda del file che scegli). Sono disponibili anche diverse versioni (vc100, vc110, vc120).

Il problema quando si utilizza NuGet è, di avere

  1. Installare il pacchetto Boost (per ottenere i file di origine)
  2. Installare i file lib (vedi link Marco A. previsto)

Questo può essere molto ingombrante dal momento che non tutte le librerie di Boost sono disponibili. Per esempio. mancavano i file lib di ASIO. Quindi se ne hai bisogno devi compilarlo di nuovo da solo. Quindi incasini il tuo progetto con i pacchetti NuGet e le librerie di auto-compilazione. Se NuGet fornisce tutto il necessario, utilizzerei il metodo NuGet.

Infine, come ho detto ho bisogno di ASIO lib e quindi ho finalmente compilato Boost da solo. Sembrava così facile usare solo un pacchetto NuGet.

Grazie a tutti per il vostro aiuto.

6

Come accennato in precedenza, Boost Nuget non può contenere tutte le possibili librerie compilate per tutte le possibili versioni di configurazione e compilatore. Tuttavia, esistono pacchetti Nuget precompilati separati e anche pacchetti sorgente. Ecco una lista di tutti i pacchetti 1.56.0 Boost Nuget https://getboost.codeplex.com/releases/view/126256

Nel tuo caso, vorrei suggerire di utilizzare precompilati boost_thread-vc120.1.56.0. Non ancora 1.57!

Se siete pigri, è anche possibile utilizzare boost-vc120.1.56.0 che dipende tutte le librerie Boost precompilati per Visual Studio 2013.

+0

Ma ASIO non fa parte di questo pacchetto o l'ho trascurato? – Skully

+1

Non è la libreria di sola intestazione Boost.ASIO? In caso affermativo, è possibile utilizzare Boost nupkg e potrebbero essere alcuni pacchetti precompilati aggiuntivi come boost_system-vc120 e boost_regex-vc120. Vedi http://stackoverflow.com/questions/5089245/boost-asio-as-header-only Per quanto ho capito, non ci sono file boost lib asio. –

+1

Non lo sapevo, scusa. Hai assolutamente ragione. Ho dato un'occhiata alla mia cartella di Boost lib. In realtà non ci sono file lib ASIO. – Skully

2

BlueGo è uno strumento che costruisce Boost utilizzando Visual Studio 2010/12/13. Devi solo avviare l'applicazione, selezionare la configurazione e premere il pulsante Crea: tutto il resto funziona automaticamente.

BlueGo

Può essere scaricato qui: https://bitbucket.org/Vertexwahn/bluego

+1

^questo ha funzionato alla grande per me, grazie. La seconda parte di questo video mi è stata utile per configurare il mio ambiente Visual Studio: http://youtu.be/5AmwIwedTCM?t=3m24s –