【摘自】http://blog.csdn.net/tinamisu/article/details/20533651
问题描述:
原来在win7 32位, VS2010 + OpenCV2.3.1环境下,已测试通过可执行的项目,换成WIN 7 64位, VS2010旗舰版 + OpenCV2.4.4后,提示如下错误:
LINK : fatal error LNK1104: 无法打开文件“opencv_core231d.lib”
分析:
opencv_core231d.lib为opencv2.3.1下的库文件,程序中不会指定opencv的版本,所以应该是项目的配置文件库文件问题。
需检查lib文件配置。
打开项目的属性管理器,逐一检查Debug | win32、Debug | x64、Release | win 32和Release | x64中的“Microsoft.Cpp.win32.user”/“Microsoft.Cpp.x64.user”——“链接器”——“附加依赖项”,发现Debug | x64的配置中,还遗留原opencv2.3.1的lib:
除了Microsoft.Cpp.win32.user中的附加依赖项外,还需要直接点击Debug | win32目录,也有个附加依赖项,也需去掉:
解决方案:
去掉7个地方的原231的lib,同时要换成 Debug X64才行,其他如win32都不行。
(因为操作系统是64位的,如果选了win32是在32位上跑的,不能在64位上运行)会提示:
opencv_highgui244.lib(opencv_highgui244.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突
分析总结:
1、编译有2种:debug和realse,生成的程序可以选择在32位或64位上运行,取决于你的机器是多少位,对应选项为win32–32位,X64–64位。因此共有2(debug/release)*2(win32/x64)种选择,每个选择又有2个地方配置了附加依赖项,如release | win32,本目录和Microsoft.Cpp.win32.user中都有,需要全部修改。
2、该项目的opencv目录配置是针对一个项目配置的,没有针对全部项目,而新装的opencv2.4.4则是针对全局配置的。可见,将来应针对全局配置,避免项目到其他机器后,因opencv版本不同和安装位置不同,导致编译不通过,避免不必要的修改。