【发布时间】:2015-01-09 04:17:46
【问题描述】:
我无法将 LibPNG 静态链接到我的 VS2012(64 位)项目。 我做了以下事情:
- 下载latest version(1614)的libPNG源代码。
- 打开随附的 VisualStudio 解决方案 (projects/vstudio/vstudio.sln)。
-
选择“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