LNK2019 无法解析的外部符号 “void __cdecl cv::error(int,class std::basic_string<char,struct std::...

编译一个基于opencv的cuda工程时报错:

LNK2019	无法解析的外部符号 "void __cdecl cv::error(int,class std::basic_string,class std::allocator > const &,char const *,char const *,int)" (?error@cv@@YAXHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD1H@Z),函数 "public: class cv::Size_ __cdecl cv::MatSize::operator()(void)const " (??RMatSize@cv@@QEBA?AV?$Size_@H@1@XZ) 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
LNK2019	无法解析的外部符号 "class cv::debug_build_guard::_InputOutputArray const & __cdecl cv::noArray(void)" (?noArray@cv@@YAAEBV_InputOutputArray@debug_build_guard@1@XZ),函数 main 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
LNK2019	无法解析的外部符号 "public: __cdecl cv::Mat::Mat(void)" (??0Mat@cv@@QEAA@XZ),函数 "public: __cdecl cv::MatExpr::operator class cv::Mat(void)const " (??BMatExpr@cv@@QEBA?AVMat@1@XZ) 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
LNK2019	无法解析的外部符号 "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ),函数 main 中引用了该符号	5.1	F:\Cuda Projects\5.1\5.1\kernel.cu.obj	1	
......

LNK2019 无法解析的外部符号 “void __cdecl cv::error(int,class std::basic_string<char,struct std::..._第1张图片
找办法:错误解析:LNK2019: 无法解析的外部符号 "public: void __thiscall

找到原因:如果这个类是动态库中定义的类,可能是因为没有把这个动态库对应的.lib文件加到工程中。

解决办法:
右键【项目】-> 【属性】 -> 【VC++目录】
LNK2019 无法解析的外部符号 “void __cdecl cv::error(int,class std::basic_string<char,struct std::..._第2张图片
之前我在这里编辑了【包含目录】,加了两个头文件目录E:\opencv\opencv_4.5.4\build\include\opencv2;E:\opencv\opencv_4.5.4\build\include;(这里以及之后的opencv路径取决于你的opencv安装路径,以下同),但是没有加【库目录】,现在点击【库目录】右边的倒三角按钮编辑加一下E:\opencv\opencv_4.5.4\build\x64\vc15\lib;

然后点击左边的【链接器】->【输入】,再选择右边的【附加依赖项】,增加opencv_world454d.lib;(取决于你安装的opencv版本对应lib)。
LNK2019 无法解析的外部符号 “void __cdecl cv::error(int,class std::basic_string<char,struct std::..._第3张图片
点击应用确定,编译成功,OK!
LNK2019 无法解析的外部符号 “void __cdecl cv::error(int,class std::basic_string<char,struct std::..._第4张图片

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