2012-10-18 10 views
14

Mój projekt korzystał ze starszej wersji programu iostreams Boost w/bzip2. Teraz próbuję dokonać aktualizacji do wersji Boost 1.51. Na początku nie skompilowałem się z programem bzip, więc oczywiście dostałem linker krzyczący o tym, że brakuje libboost_bzip2-vc100-mt-sgd-1_51.lib. Następnie podążałem za these instructions (i dodałem flagę statyczną), aby skompilować ten plik.Zwiększanie jakości iostreamów za pomocą bzip - nierozwiązane symbole

jednak uruchomiony łącznik teraz powraca grono brakujących symboli:

>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) 
... 

Jakieś pomysły jak to lib nie zawiera wszystkich ten kod? czego mi brakuje? Używam VS2010 w systemie Windows.


Edycja: Got it!

Posiadała starą wersję biblioteki libboost_iostreams-vc100-mt-sgd-1_51.lib, która została skompilowana bez pliku bzip. Co nadal nie jestem pewien czy to: Dla mojej oryginalnej kompilacji użyłem:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static 

Ten produkowany następujące pliki:

libboost_bzip2-vc100-mt-s-1_51.lib 
libboost_bzip2-vc100-mt-sgd-1_51.lib 

za „prawidłową” kompilacji (który rozwiązał problem) Użyłem:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 runtime-link=static 

Tzn. po prostu usunąłem zlib, ponieważ było to dla mnie niepotrzebne. Wyprodukował:

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 

Dlaczego biblioteki Iostreams nie zostały wyprodukowane na oryginalnej kompilacji? Bardzo dziwne.

Dzięki.

+3

Zamiast edytować swoje pytanie za pomocą rozwiązania, umieść je jako poprawną odpowiedź i zaakceptuj. –

+4

Próbowałem, ale dlatego, że zarejestrowałem się zaledwie chwilę temu, najwyraźniej nie mam dość reputacji, aby odpowiedzieć na moje własne pytania ... –

+0

@ E.K. spróbuj zalogować się do kilku serwisów StackOverflow, aby zwiększyć swoją reputację. –

Odpowiedz

1

Od E.K. na odpowiedź-in-pytanie:

miał starą wersję libboost_iostreams-vc100-MT-SGD-1_51.lib który został skompilowany bez bzip. Co nadal nie jestem pewien czy to: Dla mojej oryginalnej kompilacji użyłem:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static 

Ten produkowany następujące pliki:

libboost_bzip2-vc100-mt-s-1_51.lib 
libboost_bzip2-vc100-mt-sgd-1_51.lib 

za „prawidłową” kompilacji (który rozwiązał problem) Użyłem:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 runtime-link=static 

Tzn. po prostu usunąłem zlib, ponieważ było to dla mnie niepotrzebne. Wyprodukował:

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 

Dlaczego biblioteki Iostreams nie zostały wyprodukowane na oryginalnej kompilacji? Bardzo dziwne.

Powiązane problemy