使用VS2012 64位进行LibPNG静态链接

3
我无法将LibPNG静态链接到我的VS2012(64位)项目中。 我做了以下操作:
  1. 下载最新版本(1614)的libPNG源代码。
  2. 打开附带的VisualStudio解决方案(projects / vstudio / vstudio.sln)。
  3. 选择“Release Library”,并设置C / C ++ -> 代码生成 -> Runtime Library为“MDd”(与我的项目相同)。

    4.编译静态库。

然后在目标项目的链接器中,我在附加库目录中指定了lib的位置,并在输入中指定了lib的名称。
我还像这里所建议的那样配置了Zlib以静态方式。
然而,在编译时我收到以下错误信息:

error LNK2019: unresolved external symbol png_sig_cmp referenced in function

这是对LibPNG API的第一个函数调用。
我尝试了不同属性的调整,但它不起作用。可能是因为libPNG作为x86 lib而不是x64而出现的问题吗?

1
当将x86与64进行链接时,可能会出现无法完成的情况,因为最终汇编代码必须包含32位指针和64位指针的代码,这显然是错误的。您知道库的架构吗?为什么不在相同的架构下编译两个项目呢? - SatA
我不确定这对于C库是否重要。此外,libPNG附带的Visual Studio项目不包含64位配置。 - Michael IV
嗯,为libPNG创建自己的64位配置可能有点复杂,因为可能存在依赖于32位环境的代码,但这是值得一试的。如果您需要帮助,请发布您的问题,以便我们可以尝试帮助您解决。 - SatA
@SatA,你是完全正确的。我需要改为x64编译模式。现在它链接了。我会看看它是否正常工作。谢谢。 - Michael IV
1个回答

2

综上所述,这里的解决方案是以64位模式编译libPNG。

无法将32位汇编与64位汇编进行编译。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接