【问题标题】:boost iostreams with bzip2 built from source on windows使用从 Windows 上的源代码构建的 bzip2 提升 iostreams
【发布时间】:2011-01-04 01:28:52
【问题描述】:

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

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

问题:某处存在对 libbz2.dll 的硬编码依赖。

【问题讨论】:

    标签: c++ windows boost boost-iostreams bzip2


    【解决方案1】:

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

    LIBRARY   LIBBZ2
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多