【问题标题】:LibPNG static linking with VS2012 64bitLibPNG 与 VS2012 64bit 的静态链接
【发布时间】:2015-01-09 04:17:46
【问题描述】:

我无法将 LibPNG 静态链接到我的 VS2012(64 位)项目。 我做了以下事情:

  1. 下载latest version(1614)的libPNG源代码。
  2. 打开随附的 VisualStudio 解决方案 (projects/vstudio/vstudio.sln)。
  3. 选择“Release Library”并将 C/C++ -> Code Generation ->Runtime Library 设置为“MDd”(与我的项目中相同。

    4.编译静态库。

然后在链接器的目标项目中,我在 Additional Library 目录 中指定库的位置,并在 输入 中指定库的名称。

我还按照here 的建议将 Zlib 配置为静态。

然而,编译时我得到:

错误 LNK2019:未解析的外部符号 png_sig_cmp 在 功能

对于 LibPNG API 的第一个函数调用。

我试图调整 lib 的不同属性,但它不起作用。会不会因为 libPNG 构建为 x86 lib 而不是 x64 而发生?

【问题讨论】:

  • 当然,在将 x86 与 64 链接时可能会发生这种情况,这是无法完成的,因为最终程序集必须包含具有 32 位指针和 64 位指针的代码,这显然是错误的。你知道lib的架构吗?为什么不在同一个架构中编译这两个项目?
  • 我不确定它对 C lib 是否重要。而且 libPNG 附带的 Visual Studio 项目不包含 64 位配置。
  • 好吧,为 libPNG 创建自己的 64 位配置可能有点复杂,因为可能会有代码取决于 32 位环境,但值得一试。如果您需要帮助,请发表您的问题,以便我们尽力帮助您。
  • @SatA 你完全正确。我需要更改为 x64 编译模式。现在它可以链接了。会看到它工作正常。谢谢。

标签: c++ visual-studio-2012 libpng


【解决方案1】:

所以总结一下cmets,这里的解决方案是在64位模式下编译libPNG。

您不能用 64 位程序集编译 32 位程序集。

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 2018-04-09
    • 2012-09-19
    • 1970-01-01
    • 2011-04-18
    • 2011-01-24
    • 2010-12-31
    相关资源
    最近更新 更多