Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在windows上使用源代码构建的bzip2增强iostreams_C++_Windows_Boost_Boost Iostreams_Bzip2 - Fatal编程技术网

C++ 在windows上使用源代码构建的bzip2增强iostreams

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

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

通过指定
-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