[opencv编程]244版本跑231版本出错——fatal error LNK1104: 无法打开文件“opencv_core231d.lib”

问题描述:

                  原来在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:

[opencv编程]244版本跑231版本出错——fatal error LNK1104: 无法打开文件“opencv_core231d.lib”_第1张图片


除了Microsoft.Cpp.win32.user中的附加依赖项外,还需要直接点击Debug | win32目录,也有个附加依赖项,也需去掉:
[opencv编程]244版本跑231版本出错——fatal error LNK1104: 无法打开文件“opencv_core231d.lib”_第2张图片

解决方案:

去掉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版本不同和安装位置不同,导致编译不通过,避免不必要的修改。

你可能感兴趣的:(visual,studio,opencv)