Il mio progetto utilizzava una versione precedente di iostreams di Boost w/bzip2. Ora sto cercando di aggiornare a Boost 1.51. All'inizio non ho compilato con bzip, quindi ovviamente ho avuto il linker che urlava su libboost_bzip2-vc100-mt-sgd-1_51.lib mancante. Ho quindi seguito these instructions (e ho aggiunto il flag statico) per compilare questo file.Aumenta iostreams con bzip - simboli non risolti
Tuttavia, l'esecuzione il linker restituisce ora una serie di simboli mancanti:
>error LNK2001: unresolved external symbol "protected: __thiscall boost::iostreams::detail::bzip2_base::~bzip2_base(void)" ([email protected]@[email protected]@@[email protected])
>error LNK2001: unresolved external symbol "protected: __thiscall boost::iostreams::detail::bzip2_base::bzip2_base(struct boost::iostreams::bzip2_params const &)" ([email protected]@[email protected]@@[email protected][email protected]@@Z)
>error LNK2001: unresolved external symbol "int const boost::iostreams::bzip2::stream_end" ([email protected]@[email protected]@@3HB)
...
Tutte le idee come mai il lib non contiene tutto il codice? Cosa mi manca? Sto usando VS2010 su Windows.
Modifica: Capito!
Aveva una vecchia versione di libboost_iostreams-vc100-mt-sgd-1_51.lib compilata senza bzip. Quello che sto ancora non sono sicuro di questo: Per la mia compilation originale che ho usato:
>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static
Questo ha prodotto i seguenti file:
libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
per la compilation "corretto" (che ha risolto il problema) Io ho usato:
>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 runtime-link=static
Ie semplicemente rimosso lo zlib, poiché non era necessario per me. Ha prodotto:
libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
libboost_iostreams-vc100-mt-s-1_51.lib
libboost_iostreams-vc100-mt-sgd-1_51.lib
Come mai le librerie iostreams non sono state prodotte nella compilation originale? Molto strano.
Grazie.
Invece di modificare la domanda con la soluzione, inserirla come risposta corretta e accettarla. –
Provato, ma poiché mi sono registrato solo poco tempo fa, apparentemente non ho abbastanza reputazione per rispondere alle mie domande ... –
@ E.K. prova ad accedere ad altri siti StackOverflow per aumentare la reputazione. –