2012-10-18 7 views
14

Mein Projekt verwendete eine ältere Version von Boosts iostreams w/bzip2. Ich versuche jetzt, auf Boost 1.51 zu aktualisieren. Zuerst habe ich nicht mit bzip kompiliert, also habe ich offensichtlich den Linker über libboost_bzip2-vc100-mt-sgd-1_51.lib geschrieen. Ich folgte dann these instructions (und das statische Flag hinzugefügt), um diese Datei zu kompilieren.Boosten von Iostreams mit bzip - ungelöste Symbole

Allerdings gibt den Linker läuft nun eine Reihe von Symbolen fehlt:

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

Irgendwelche Ideen, wie kommen die lib nicht alle diesen Code enthält? Was vermisse ich? Ich verwende VS2010 unter Windows.


Bearbeiten: Verstanden!

Hatte eine alte Version von libboost_iostreams-vc100-mt-sgd-1_51.lib, die ohne das bzip kompiliert wurde. Was ich bin immer noch nicht sicher ist dies: Für meine ursprüngliche Zusammenstellung habe ich:

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

Dies ergab die folgenden Dateien:

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

Für den „richtig“ Compilation (dass das Problem gelöst) Ich benutzte:

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

Ie einfach die zlib entfernt, da es für mich unnötig war. Es produziert:

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 

Wie kommen die Iostreams libs wurden nicht auf der ursprünglichen Zusammenstellung produziert? Sehr komisch.

Danke.

+3

Anstatt Ihre Frage mit der Lösung zu bearbeiten, stellen Sie sie als richtige Antwort dar und akzeptieren Sie sie. –

+4

Versucht zu, aber weil ich erst vor einiger Zeit registriert habe, habe ich anscheinend nicht genug Ruf, um meine eigenen Fragen zu beantworten ... –

+0

@ E.K. Versuchen Sie, sich an einigen weiteren StackOverflow-Sites anzumelden, um die Reputation zu erhöhen. –

Antwort

1

Von E. K. Antwort-in-Frage:

eine alte Version von libboost_iostreams-VC100-mt-sgd-1_51.lib hat, die ohne die bzip kompiliert wurde. Was ich bin immer noch nicht sicher ist dies: Für meine ursprüngliche Zusammenstellung habe ich:

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

Dies ergab die folgenden Dateien:

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

Für den „richtig“ Compilation (dass das Problem gelöst) Ich benutzte:

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

Ie einfach die zlib entfernt, da es für mich unnötig war. Es produziert:

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 

Wie kommen die iostreams Libs nicht auf der ursprünglichen Zusammenstellung produziert wurden? Sehr komisch.