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中所链接的路径,从而解决了问题。