gpt4 book ai didi

c++ - 使用 bzip boost iostream - 未解析的符号

转载 作者:IT老高 更新时间:2023-10-28 21:34:09 29 4
gpt4 key购买 nike

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

但是,现在运行链接器会返回一堆缺少的符号:

>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

这产生了以下文件:

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

对于我使用的“正确”编译(解决了问题):

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

即只是删除了 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

为什么 iostreams 库不是在原始编译时生成的?很奇怪。

谢谢。

最佳答案

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

这产生了以下文件:

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

对于我使用的“正确”编译(解决了问题):

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

即只是删除了 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

为什么 iostreams 库不是在原始编译时生成的?很奇怪。

关于c++ - 使用 bzip boost iostream - 未解析的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950544/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com