gpt4 book ai didi

c++ - 使用 boost Zlib 时未解析的外部符号 inflateEnd(和其他)

转载 作者:行者123 更新时间:2023-11-30 05:38:33 24 4
gpt4 key购买 nike

我正在将 32 位项目转换为 x64。在大多数情况下,它只是意味着将 64 附加到库路径(并最终为 x64 构建这些库)。现在我假设所有库都已准备就绪,并且代码也与 x64 兼容。但是我不断收到 boost zlib 库的错误,如下所示:

error LNK2019: unresolved external symbol inflateEnd
error LNK2019: unresolved external symbol inflate
error LNK2019: unresolved external symbol inflateInit_
error LNK2019: unresolved external symbol deflateEnd
error LNK2019: unresolved external symbol deflate
error LNK2001: unresolved external symbol "int const boost::iostreams::zlib::default_compression"
error LNK2001: unresolved external symbol "int const boost::iostreams::zlib::deflated"
error LNK2001: unresolved external symbol "int const boost::iostreams::zlib::default_strategy"

我为链接器启用了详细模式(在 MS Visual Studio 中,您通过将 /VERBOSE:LIB 添加到其他链接器选项来实现此目的)。多亏了它,我可以看到这个输出行:

Searching .\..\..\libs\boost145\stage\lib64\libboost_zlib-vc100-mt-gd-1_45.lib

这意味着该库位于 boost145\stage\lib64 中。那么我现在应该寻找什么?

一个奇怪的事情是,定义第一组缺失符号的文件(那些不在boost中的)在项目中有头文件,zlib.hzconf.h。也许这是一些提示? zlib.h 将外部符号定义为:

ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));

明显的问题是:这个头文件的 lib 文件到底在哪里?

最佳答案

我遇到了同样的问题,为了解决我从 zlib 下载源代码并在本地构建 x64 dll/lib 的错误。下载的解决方案文件存在一些问题,修复方法如下所述。

Zlib 1.2.8 源代码:http://zlib.net/zlib128.zip

VS2012 的解决方案文件位于:zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln

修复:

  1. 改变: <Command>cd ..\..\..\contrib\masmx64
    bld_ml64.bat</Command>

    到: <Command>cd ..\..\contrib\masmx64
    bld_ml64.bat</Command>

  2. 在 zlibvc 项目属性 -> 链接器 -> 高级 -> 图像具有安全异常处理程序 -> 设置为否 (/SAFESEH:NO)。关于SAFESEH的信息:Compiling libffi with VS2012 fails with fatal error LNK1281: Unable to generate SAFESEH image

关于c++ - 使用 boost Zlib 时未解析的外部符号 inflateEnd(和其他),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32692593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com