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.
Zamiast edytować swoje pytanie za pomocą rozwiązania, umieść je jako poprawną odpowiedź i zaakceptuj. –
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 ... –
@ E.K. spróbuj zalogować się do kilku serwisów StackOverflow, aby zwiększyć swoją reputację. –