C++ 使用bzip的Boost iostreams-未解析符号

C++ 使用bzip的Boost iostreams-未解析符号,c++,boost,unresolved-external,bzip2,boost-iostreams,C++,Boost,Unresolved External,Bzip2,Boost Iostreams,我的项目使用了Boost的iostreams的旧版本w/bzip2。我现在正试图升级到Boost 1.51。起初我没有使用bzip编译,所以很明显,我让链接器大喊libboost_bzip2-vc100-mt-sgd-1_51.lib丢失了。然后我按照(并添加了静态标志)编译了这个文件 但是,运行链接器现在会返回丢失的一组符号: >error LNK2001: unresolved external symbol "protected: __thiscall boost::iostream

我的项目使用了Boost的iostreams的旧版本w/bzip2。我现在正试图升级到Boost 1.51。起初我没有使用bzip编译,所以很明显,我让链接器大喊libboost_bzip2-vc100-mt-sgd-1_51.lib丢失了。然后我按照(并添加了静态标志)编译了这个文件

但是,运行链接器现在会返回丢失的一组符号:

>error LNK2001: unresolved external symbol "protected: __thiscall boost::iostreams::detail::bzip2_base::~bzip2_base(void)" (??1bzip2_base@detail@iostreams@boost@@IAE@XZ)
>error LNK2001: unresolved external symbol "protected: __thiscall boost::iostreams::detail::bzip2_base::bzip2_base(struct boost::iostreams::bzip2_params const &)" (??0bzip2_base@detail@iostreams@boost@@IAE@ABUbzip2_params@23@@Z)
>error LNK2001: unresolved external symbol "int const boost::iostreams::bzip2::stream_end" (?stream_end@bzip2@iostreams@boost@@3HB)
...
你知道为什么lib不包含所有这些代码吗?我错过了什么? 我正在Windows上使用VS2010


编辑:明白了

有一个旧版本的libboost_iostreams-vc100-mt-sgd-1_51.lib,它是在没有bzip的情况下编译的。我仍然不确定的是:对于我的原始编译,我使用了:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static
>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static
这产生了以下文件:

libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
对于“正确”的编译(解决了问题),我使用了:

也就是说,只是删除了zlib,因为这对我来说是不必要的。它产生了:

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
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
为什么iostreams libs不是在原始编译中生成的?很奇怪


谢谢。

来自E.K.的问题答案:

有一个旧版本的libboost_iostreams-vc100-mt-sgd-1_51.lib,它是在没有bzip的情况下编译的。我仍然不确定的是:对于我的原始编译,我使用了:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static
>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static
这产生了以下文件:

libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
对于“正确”的编译(解决了问题),我使用了:

也就是说,只是删除了zlib,因为这对我来说是不必要的。它产生了:

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

为什么iostreams libs不是在原始编译中生成的?非常奇怪。

不要用答案编辑你的问题,而是把它作为正确的答案并接受它。尝试,但是,因为我刚刚注册不久,显然我没有足够的声誉来回答我自己的问题…@E.K.尝试登录更多的StackOverflow网站以提高声誉。@E.K.现在尝试自我回答-低代表性用户自我回答的限制只有八个小时的延迟(垃圾邮件控制),这不是一个永久的限制。很高兴这修复了您的错误-我有
libboost\u iostreams
lib文件,但我仍然得到错误。。。