问题类型取自《OpenCV3编程入门》
- 【问题1】找不到core.h
出现这个问题也许是因为include的时候粗心大意了。比如你的版本是2.4.6,在这个版本下,opencv根文件夹下面会有个include,但配置的时候如果包含的是它就错了,正确的应该填build文件夹中的那个include。 - 【问题2】无法解析的外部命令
这个问题其实上文已经有过解释:不管是32位还是64位操作系统,只需要考虑用win32编译器还是X64 编译器。
其实配置选择什么跟64位还是32位系统没有直接的关系,而是在于你在编译程序时使用的是哪个编译器:编译器是win32,就用x86;编译器是X64,就用X64。不过一般情况下,都是用的win32的X86编译器。所以,无论32还是 64位操作系统,配置文件最好都选择x86版的。 - 【问题3】形如-error LNK2005:xxx已经在msvcrtd.lib(MSVCR90D.dll)中定义
出现这个问题,把静态库不包含就行了。 - 【问题4】应用程序无法正常启动0xc000007b
这个是Lib包含的问题。可能你同时包含了X86和X64的,可能包含出错了。而且对于windows7/8 64位,dll要放在和System32文件夹同级的SysWOW64文件夹中。 - 【问题5】明明图片路径是对的,却载入不进图片,提示指针越界,有未经处理的异常
类似错误如图1.22,这表示在内存中图片没有读取成功,导致指针越界异常。这时要再次检查以确保图片的后缀名和路径与代码中的一致。一般情况下出现此问题算是OpenCV的一个bug,是工程属性里面关于带d和不带d的lib文件的附加依赖项的问题。
就算配置成功,若想在debug和release模式下同时可以运行,还需手动在工程属性里面加上一些lib。当得到这样的错误时,可以把调试方式改一改,将debug和release互换,如图1.27所示。
或者打开当前工程的属性页(注意不是通用属性页),debug或者release哪个报错,就把对应的带d或不带d的lib添加到【(当前)工程属性】→【链接器】→【输入】→【附加的依赖项】下即可。 - 【问题6】无法打开文件“opencv_ml249d.lib”系列的错误
fatal error LNK1104:无法打开文件“opencv_ml249d.lib”是一个常见的错误。这个错误主要是因为包含的库目录中,和包含的附加依赖项不能相互对应照成的。也许是“opencv_ml249d.lib“多加了一个空格,成了”opencv_ml249d.lib“,就会报错。遇到这个问题,检查以下三个方面。
(1). 检查第四步”4.工程库(lib)目录的配置“库目录中的路径是否准确。
(2). 检查第五步”5.链接库的配置“中“附加依赖项”的格式有没有问题,有没有多空格,版本号248、249是否正确,有没有多一个空格或少一个点。
(3). 第二步环境变量的配置是否准确。
另外的解决方案是:依次进入【项目】→【属性管理器】→【Debug|Win32->Microsoft.Cpp.Win32.userDirectories】中的【属性页面】→【链接器】→【常规】,在里面的【附加库目录】中加入相应的lib文件目录。