关于在Visual Studio 2008/2010 和Opencv平台下出现LINK : fatal error
http://blog.sina.com.cn/s/blog_9015f3230101bbef.html
关于在Visual Studio 2008/2010 和Opencv平台下出现LINK : fatal error LNK1000/1104等错误解决办法
LINK : fatal error LNK1104: 无法打开文件“.obj”
注意opencv的版本!!!!
由于自己常用Visual Studio 2008/2010 和Opencv平台编程,像 LINK : fatal error LNK1104: 无法打开文件“.obj”;LINK : fatal error LNK1104: 无法打开文件“xx.lib”;LINK : fatal error LNK1000: Internal error during Inc...等这样的错误经常遇到。根据自己的经验总结起来如下:
首先,对于这些错误一般都是由于一些新手对于Visual Studio 2008/2010 和Opencv平台的开发环境不熟悉,在配置环境变量、包含文件、库文件、添加依赖项等没有配置正确导致的。
一、对于遇到LINK : fatal error LNK1104: 无法打开文件“.obj”;LINK : fatal error LNK1104: 无法打开文件“xx.lib”这两类错误,你需要检查你的环境变量、包含文件、库文件、添加依赖项等,看是否配置对了。特别是“添加依赖项”,最容易出错,因为VS2008和VS2010的配置有区别。VS2008中xx.lib之间用空格键;而VS2010用逗号隔开;比如我用的最新的Opencv2.40版本的,在VS2008配置:
输入附加依赖项:Debug项:opencv_calib3d240d.lib opencv_contrib240d.lib opencv_core240d.lib opencv_features2d240d.lib opencv_flann240d.lib opencv_gpu240d.lib opencv_highgui240d.lib opencv_imgproc240d.lib opencv_legacy240d.lib opencv_ml240d.lib opencv_objdetect240d.lib opencv_ts240d.lib opencv_video240d.lib
Release项:opencv_calib3d240.lib opencv_contrib240.lib opencv_core240.libopencv_features2d240.lib opencv_flann240.lib opencv_gpu240.lib opencv_highgui240.lib opencv_imgproc240.lib opencv_legacy240.lib opencv_ml240.lib opencv_objdetect240.lib opencv_ts240.lib opencv_video240.lib %(AdditionalDependencies)
在VS2010下配置:
输入附加依赖项:Debug项:opencv_calib3d240d.lib;opencv_contrib240d.lib;opencv_core240d.lib;opencv_features2d240d.lib;opencv_flann240d.lib;opencv_gpu240d.lib;opencv_highgui240d.lib;opencv_imgproc240d.lib;opencv_legacy240d.lib;opencv_ml240d.lib;opencv_objdetect240d.lib;opencv_ts240d.lib;opencv_video240d.lib
Release项:opencv_calib3d240.lib;opencv_contrib240.lib;opencv_core240.lib;opencv_features2d240.lib;opencv_flann240.lib;opencv_gpu240.lib;opencv_highgui240.lib;opencv_imgproc240.lib;opencv_legacy240.lib;opencv_ml240.lib;opencv_objdetect240.lib;opencv_ts240.lib;opencv_video240.lib;%(AdditionalDependencies)
除此之外,我还要强调的是,无论你用的是WINDOWS XP还是WIN7系统,是32位的还是64位,库文件的配置都是:C:\opencv\build\x86\vc10\lib(vs2010的)或者是C:\opencv\build\x86\vc9\lib(2008)。而不是C:\opencv\build\x64\vc10\lib或者C:\opencv\build\x64\vc9\lib;
对于这个问题,我亲自尝试过很多次,必须是这样,没有为什么。当然必须有个前提就是你的Opencv文件夹必须放在C盘,并且按照这个路径C:\opencv\build\x86\vc10\lib(vs2010的)刚好能找到你的Lib库文件。若是D盘,就把路径改为D盘。所以在配置路径时一定要一步步打开文件夹,并检查核实路径,这地方最容易出错。比如你的opencv文件放在了C:\programfile\opencv\build...或者是C:\opencv2.3.1\build....等,或者你的opencv文件夹命名时有大写之母,如:C:\OPencv\build.....,编译时就会因为找不到lib文件而出错。对于下面环境变量、包含目录等的有关路径设置,都是这个道理。
同理对于环境变量的设置也都是:PATH值: C:\opencv\build\x86\vc10\bin;C:\opencv\build\common\tbb\ia32\vc10。或者是PATH值: C:\opencv\build\x86\vc9\bin;C:\opencv\build\common\tbb\ia32\vc9。无论你用的是WINDOWS XP还是WIN7系统,是32位的还是64位,都是这样。千万不能因为你的是WIN7 64位的系统,而改成了C:\opencv\build\x64\vc9\bin;C:\opencv\build\common\tbb\intel64\vc9,这样会导致编译无法连接。
对于环境变量,我还要强调的是:在你每次更改完PATH值后,一定要记得重启电脑,重启了以后,更改的值才有效。
包含目录:C:\opencv\build\include\opencv;C:\opencv\build\include\opencv2;C:\opencv\build\include;$(IncludePath)
二、对于LINK : fatal error LNK1000: Internal error during IncrBuildImage错误:
当在win7下安装Visual stdio 2008 sp1时会遇到。写法度是碰到LINK : fatal error LNK1000: Internal error during IncrBuildImage错误,搜了一下发明是vs的bug,须要打补丁。
解决办法
1、去微软网站下载KB948127补丁()并安装。
并不是每小我都能很荣幸地安装上该补丁,因为我在安装的时辰碰到了下列题目:此策画机上没有安装本软件更新支撑的产品,单击“作废”退出安装法度。如下图所示:
2、和我一样不幸安装失败的还可以选择如下手工来改工程设置。
选择项目(Project)->属性(Property)->链接器(Linker)->常规(General)下面的“启用增量链接(Enable Incremental Linking)”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了别的一个警告:FormatCom.obj : warning LNK4075: 忽视“/EDITANDCONTINUE”(因为“/INCREMENTAL:NO”规范)。
选择项目,属性(Property pages)->设备属性(Configuration Properties) ->C/C++,批改“调试信息格局(Debug Information Format)”为“法度数据库(Program Database(/Zi))”即可。
3、若是你命运不好又安装失败,并且又感觉更改工程设置不成靠,可以去下载sp1补丁包安装。
我安装了sp1补丁包后今朝没有再呈现error LNK1000的错误。
三、若是遇到无法预编译头文件的错误,这个比较好办,你只需要把项目---属性----配置属性---C/C++---预编译头里面的下拉菜单选项改为:不使用预编译头,就好了。