C++ 在windows上使用源代码构建的bzip2增强iostreams
最近,我花了一些时间在windows上构建boost 1.44.0版,同时支持iostreams对zlib和bzip2压缩过滤器的支持。出于各种原因,决定允许boost从源代码构建zlib和bzip2库。不管它值多少钱,但我认为这并不重要,我使用的MSVC版本是VC9(VS2008)。还请注意,从我的表面检查来看,这个问题应该适用于在windows上基于bzip2构建iostreams的任何版本的boost 通过指定C++ 在windows上使用源代码构建的bzip2增强iostreams,c++,windows,boost,boost-iostreams,bzip2,C++,Windows,Boost,Boost Iostreams,Bzip2,最近,我花了一些时间在windows上构建boost 1.44.0版,同时支持iostreams对zlib和bzip2压缩过滤器的支持。出于各种原因,决定允许boost从源代码构建zlib和bzip2库。不管它值多少钱,但我认为这并不重要,我使用的MSVC版本是VC9(VS2008)。还请注意,从我的表面检查来看,这个问题应该适用于在windows上基于bzip2构建iostreams的任何版本的boost 通过指定-sZLIB_SOURCE=和-sBZIP2_SOURCE=来干净地构建Boos
-sZLIB_SOURCE=
和-sBZIP2_SOURCE=
来干净地构建Boost。但是,注意到boost_iostreams*.dll libs依赖于libbz2.dll(而不是boost_bzip2*.dll),而libbz2.dll并不存在。然而,Boost成功地构建了Boost_bzip2*.dll。注意,我使用通配符作为所有构建变量信息的占位符
问题:某个地方存在对libbz2.dll的硬编码依赖关系。我找到的最简单的解决方案是修改bzip2源代码中包含的libbz2.def。即删除该行(从bzip2v1.0.6开始,为第1行): 删除这一行将消除对名为“libbz2.DLL”的DLL的硬编码依赖关系。然后,这允许名为boost_bzip2*.dll的boost构建库以及生成的*.lib和*.exp文件正确解析为相应的dll,并导出所有必要的函数
LIBRARY LIBBZ2