2

是否有关于如何在 Windows 上使用 zlib 编译 boost 的好教程。我查看了 boost 参考,但它含糊不清,还不够。我确实下载了 zlib dll 和源代码,并在 Visual Studio 中进行了参考。我有链接错误

gzip_decompressor();

完整代码:

using namespace boost::iostreams;
using namespace std;
std::ifstream file("hello.gz", std::ios_base::in | std::ios_base::binary);
filtering_streambuf < input > in;
in.push(gzip_decompressor());
in.push(file);
boost::iostreams::copy(in, std::cout);

我收到此错误,

错误 11 错误 LNK2019:无法解析的外部符号“_declspec(dllimport) public: __thiscall boost::iostreams::detail::gzip_header::~gzip_header(void)”(__imp??1gzip_header@detail@iostreams@boost@@QAE@XZ ) 在函数 "public: __thiscall boost::iostreams::basic_gzip_decompressor \>::~basic_gzip_decompressor >(void)" (??1?$basic_gzip_decompressor@V?$allocator@D@std@@@iostreams@boost@@ QAE@XZ) –</p>

4

1 回答 1

3

链接器实际上告诉您它找不到“basic_gzip_decompressor”。原因是你的 boost 库中没有内置 zlib。

这个SO问题声称有一个解决方案,而不必将zlib构建到boost libs中)

我同意这方面的文档有点简洁,但可以在此处找到。如果您的正常构建命令行是这样的:

b2 -j15 --toolset=msvc --build-type=complete stage 

添加 ZLIB 定义以使其使用 zlib 构建

b2 -j15 --toolset=msvc --build-type=complete stage -s ZLIB_SOURCE="C:\zlib-1.2.8" ZLIB_INCLUDE="C:\zlib-1.2.8" 

您可以在查找配置检查输出时相对快速地检查它是否有效(在编译完成之前)。那里应该说类似:

- zlib               : yes  (cached)
于 2015-10-08T17:46:53.327 回答