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.
Anstatt Ihre Frage mit der Lösung zu bearbeiten, stellen Sie sie als richtige Antwort dar und akzeptieren Sie sie. –
Versucht zu, aber weil ich erst vor einiger Zeit registriert habe, habe ich anscheinend nicht genug Ruf, um meine eigenen Fragen zu beantworten ... –
@ E.K. Versuchen Sie, sich an einigen weiteren StackOverflow-Sites anzumelden, um die Reputation zu erhöhen. –