最近,我花了一些时间来研究在Windows上构建的升级版本1.44.0,同时iostreams支持zlib和amp; bzip2压缩过滤器。由于各种原因,决定允许boost同时构建zlib和amp;源自bzip2库。对于它的价值,但我认为不重要,我使用的MSVC版本是VC9(VS2008)。另请注意,从我的肤浅检查来看,这个问题应该适用于在Windows上针对bzip2构建的iostreams的任何版本的boost。
通过指定-sZLIB_SOURCE=<PATH>
和-sBZIP2_SOURCE=<PATH>
来彻底建立Boost。但是,有人注意到boost_iostreams * .dll库取决于libbz2.dll(而不是boost_bzip2 * .dll),它不存在。然而,Boost成功构建了boost_bzip2 * .dll。请注意,我使用通配符作为所有构建变体信息的占位符。
问题:某处存在对libbz2.dll的硬编码依赖。
答案 0 :(得分:4)
我发现最简单的解决方案是修改bzip2源中包含的libbz2.def。即删除该行(从bzip2 v1.0.6开始,它是第1行):
LIBRARY LIBBZ2
删除此行消除了对名为“libbz2.dll”的DLL的硬编码依赖性。然后,这允许名为boost_bzip2 * .dll的boost-built libs和生成的* .lib和* .exp文件正确解析为相应的DLL,并导出所有必需的函数。