C++ 如何在Windows上使用zlib正确链接到boost?

C++ 如何在Windows上使用zlib正确链接到boost?,c++,boost,cmake,zlib,C++,Boost,Cmake,Zlib,我刚刚使用MSVC在Windows上重建了boost 1.57,因为我想添加对zlib的支持: .\b2 toolset=msvc-12.0 link=shared threading=multi address-model=64 --build-type=complete install -s NO_ZLIB=0 -s ZLIB_SOURCE=D:\zlib128 这可以很好地构建并生成新文件boost_zlib-vc120-mt-1_57.dll和boost_zlib-vc120-mt-1

我刚刚使用MSVC在Windows上重建了boost 1.57,因为我想添加对zlib的支持:

.\b2 toolset=msvc-12.0 link=shared threading=multi address-model=64 --build-type=complete install -s NO_ZLIB=0 -s ZLIB_SOURCE=D:\zlib128
这可以很好地构建并生成新文件
boost_zlib-vc120-mt-1_57.dll
boost_zlib-vc120-mt-1_57.lib

然后,我将使用cmake为我的项目添加助力:

FIND_PACKAGE(Boost ${BOOST_VERSION} EXACT REQUIRED COMPONENTS system date_time filesystem iostreams regex thread zlib)
if(Boost_FOUND)
    ADD_DEFINITIONS(${BOOST_DEFINITIONS} -DBOOST_ALL_NO_LIB)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
    LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
    TARGET_LINK_LIBRARIES(foobar ${Boost_LIBRARIES})
endif()
在VisualStudio中,我在“附加依赖项”中看到,
boost_zlib-vc120-mt-1_57.lib
现在也在这里列出。但尝试编译失败,出现链接器错误:

错误1730错误LNK2019:未解析的外部符号“int const boost::iostreams::zlib::default_compression”(?默认值_compression@zlib@iostreams@boost@@3HB)在函数“public:\uU cdecl boost::iostreams::detail::zlib\u decompressor\u impl>::zlib\u decompressor\u impl>(int)”中引用(?0?$zlib_解压器_impl@V?$allocator@D@性病@@@detail@iostreams@促进@@QEAA@H@Z)


如何修复此问题?

您是否尝试过使用自动链接?删除
-DBOOST_ALL_NO_LIB
,如果这样做有效,那么您还没有将某些库添加到所需的Boost LIB列表中。@Praetorian谢谢,它确实可以工作。您知道我如何找出缺少的库吗?可能会有所帮助。您尝试过使用自动链接吗?Remove
-DBOOST\u ALL\u NO\u LIB
,如果这样做有效,那么您还没有将某个库添加到所需的Boost LIB列表中。@Praetorian谢谢,它确实有效。知道我如何找出缺少的库吗?可能会有所帮助。