error LNK2001: 无法解析的外部符号 和 error LNK2019: 无法解析的外部符号 以及 warning LNK4272: 库计算机类型“x86”与目标计算机类型“x64”冲突

在尝试编译64位CMake项目时,遇到LNK2001和LNK2019错误,原因是项目链接了32位的ANN.lib库。通过确认库与项目的位数不匹配,并找到ANN.lib源码,使用VS2019编译生成64位版本的库和DLL,解决了问题。将64位库文件放置到正确位置后,项目成功编译。
摘要由CSDN通过智能技术生成

error LNK2001: 无法解析的外部符号 和 error LNK2019: 无法解析的外部符号 以及 warning LNK4272: 库计算机类型“x86”与目标计算机类型“x64”冲突

通过对某个cmake项目进行生成时,出现了“error LNK2001: 无法解析的外部符号”和“error LNK2019: 无法解析的外部符号”的错误,通过错误中的提示可以推测出是ANN.lib的错误,从“warning LNK4272: 库计算机类型“x86”与目标计算机类型“x64”冲突”可以推测出错误的原因是项目所链接的ANN.lib库是32位,而所编译的项目是64位导致的错误。通过https://blog.csdn.net/lianghong1564868/article/details/107201858/中的方法证实了ANN.lib库是32位,而此库并没有64位的版本。
为了解决这一问题,本人找到了ANN.lib的源码,用vs2019打开源码的工程,按https://docs.microsoft.com/zh-cn/cpp/build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms?view=msvc-170中的方法用x64的debug或release进行编译,得到x64的debug或release版本的ANN.lib和ANN.dll,将64位的ANN.dll放到C:\Windows\System32,将64位的ANN.lib放到CMakeLists.txt中所链接的路径,从而解决了问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值