6

最近,我花了一些时间在 Windows 上构建 boost 1.44.0 版本,同时 iostreams 支持 zlib 和 bzip2 压缩过滤器。由于各种原因,决定允许 boost 从源代码构建 zlib 和 bzip2 库。对于它的价值,但我认为这并不重要,我使用的 MSVC 版本是 VC9 (VS2008)。另请注意,从我的肤浅检查来看,这个问题应该适用于在 windows 上针对 bzip2 构建的 iostreams 的任何版本的 boost。

-sZLIB_SOURCE=<PATH>通过指定和干净地构建提升-sBZIP2_SOURCE=<PATH>。但是,我们注意到 boost_iostreams*.dll 库依赖于不存在的 libbz2.dll(而不是 boost_bzip2*.dll)。然而,Boost 确实成功地构建了 boost_bzip2*.dll。请注意,我使用通配符作为所有构建变体信息的占位符。

问题:在某个地方存在对 libbz2.dll 的硬编码依赖项。

4

1 回答 1

4

我找到的最简单的解决方案是修改 bzip2 源中包含的 libbz2.def。即删除该行(bzip2 v1.0.6 为第 1 行):

LIBRARY   LIBBZ2

删除此行消除了对名为“libbz2.dll”的 DLL 的硬编码依赖性。然后,这允许名为 boost_bzip2*.dll 的 boost 构建的库和生成的 *.lib 和 *.exp 文件正确解析为相应的 DLL,并导出所有必要的函数。

于 2011-01-04T01:29:51.300 回答