美文网首页
导入opencv库的一些错误以及解决方法

导入opencv库的一些错误以及解决方法

作者: 劝分不劝和 | 来源:发表于2018-04-30 17:37 被阅读0次

    其实我不是安装opencv,而是在另一个下载到的工程里,原作者引入了opencv的库,像是这样:

    #include <opencv2/opencv.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/core/utility.hpp>
    

    问题:1:我的电脑里压根没有opencv库,所以要引入opencv

    因没有opencv库导致的引入错误
    我是直接下载了opencv的库,丢进包含目录里面,包含目录可以在工程>>属性>>配置属性>>VC++目录>>包含目录里,点开下拉选项编辑里看到完整的路径,通过这个打开相应的文件夹,把opencv库丢进去即可,当然,也可以放到自己的工程下,用#include""双引号的形式引用,或者直接在该工程的属性里的包含目录下再添加opencv的目录,考虑到,以后下载的工程可能会用到,我就直接丢到编译器的包含目录下了。
    设置目录
    • 问题1.5 :我第一次导入的是opencv2的库,但实际上你要下载的是opencv3的库,因为opencv2里缺少了一些需要导入的文件,例如需要的core文件夹里的utility.hpp文件。而且当下完opencv3时,会发现,opencv3里的include文件夹里的名字,就是opencv2,= =,像是这样:
    opencv\build\include\opencv2
    

    所以解决办法是,要下载opencv3的库并导入。这个问题其实是特别具体的问题,发生在别人身上的概率很低,只是顺便提一下:如果你在别的项目里用到opencv,里面引入了opencv2这个文件夹下面的头文件,并不意味着原来的项目用的是opencv2,因为opencv3里面的包含文件夹下也是opencv2这个文件夹名。

    问题2:缺少 cuda_runtime.h文件。

    这个我通过下载安装cuda之后解决了,不用怎么配置,就到官方下载相应的可执行文件,安装以后就解决了。

    问题3:PCH 警告

    错误(活动)  E2902   PCH 警告: 头停止点需要位于全局范围。未生成 IntelliSense PCH 文件。
    

    这个问题,可能是一些类定义或者内联函数后面没有加上;号,加上就可以了。我记得还有一次我改变了一下include文件的顺序就解决了。好吧,其实我也不太懂。

    问题4:链接错误LNK2001,无法解析外部符号xxx

    这种问题,无法解析外部符号的这个符号是最关键的,例如,我的这个错误中,后面显示了发生的位置,但是这可能只是在使用的时候检测到的地方,也就是所,程序执行到这里,突然发现执行不下去了,某些符号解析不了,具体来说,大概率可以归结为某个定义了的函数没有实现这个原因。那么你就顺着这个外部符号,比如我的错误是 无法解析外部符号void __thiscall cv::String::deallocate ...,那么就说明是这个函数有问题(而不是别的),顺藤摸瓜的,肯定就是opencv的某些东西没有配置好。我已开始还以为是跟什么__cdecl或者__thiscall有关,后来才知道那是函数调用的方式,只是加在前面说明这个函数是怎么调用的……后来又怀疑是不是后面那个发生的地方的某个库或者obj文件少写了什么,导致某些声明的函数没有实现,由于我的这个项目的这些文件是修改过的,所以我又把原来的这些文件导回来,反复修改来修改去,最后还是错,现在想想真是让人哭笑不得。实际上,如果是源码生成的obj文件没有实现,那么编译一定是不会过的,因此这种情况大概率是某个库,你只导入了头文件(这里面有声明),而没有实现(实现一般在一些lib文件里)。好了搞清楚这些问题,那就是要引入这些lib文件,在属性>>VC++>>附加库目录里,把你的那个库目录添加进去,再在链接器>>输入>>附加依赖项把那些库的具体名字输入进去就可以了。仅此两步,就这么简单。但是,还要注意的是,库(lib)是已经编译出来的一些obj文件的集合,那么他们在编译时是用64位编译还是用32位编译时有区别的,因此,你自己编译的时候也要注意,最好的办法是,例如我在vs2017平台下,我就把debug/releasewin32/x64的四种组合都按照上述的两步设置一遍即可。

    相关文章

      网友评论

          本文标题:导入opencv库的一些错误以及解决方法

          本文链接:https://www.haomeiwen.com/subject/oifshftx.html