近期VS2015使用问题总结

Posted AllyLi0224

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了近期VS2015使用问题总结相关的知识,希望对你有一定的参考价值。

问题一

MSVCRTD.lib(exe_winmain.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用

*****.exe : fatal error LNK1120: 1 个无法解析的外部命令

解决办法:

项目->属性->配置属性->连接器->系统中的【子系统】设置为Windows(/SUBSYSTEM:CONSOLE)

问题二

ImgProc.obj : error LNK2019: 无法解析的外部符号 "class cv::debug_build_guard::_InputOutputArray const & __cdecl cv::noArray(void)" (?noArray@cv@@YAAEBV_InputOutputArray@debug_build_guard@1@XZ),该符号在函数 "private: double __cdecl ImgProc::TemplateMatchingOnGray(int)" (?TemplateMatchingOnGray@ImgProc@@AEAANH@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_OutputArray const &)const " (?copyTo@Mat@cv@@QEBAXAEBV_OutputArray@debug_build_guard@2@@Z),该符号在函数 "public: __cdecl cv::Mat::Mat<double,2,3>(class cv::Matx<double,2,3> const &,bool)" (??$?0N$01$02@Mat@cv@@QEAA@AEBV?$Matx@N$01$02@1@_N@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::minMaxLoc(class cv::debug_build_guard::_InputArray const &,double *,double *,class cv::Point_<int> *,class cv::Point_<int> *,class cv::debug_build_guard::_InputArray const &)" (?minMaxLoc@cv@@YAXAEBV_InputArray@debug_build_guard@1@PEAN1PEAV?$Point_@H@1@20@Z),该符号在函数 "private: double __cdecl ImgProc::TemplateMatchingOnGray(int)" (?TemplateMatchingOnGray@ImgProc@@AEAANH@Z) 中被引用

1>ImgProc.obj : error LNK2019: 无法解析的外部符号 "bool __cdecl cv::imwrite(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::debug_build_guard::_InputArray const &,class std::vector<int,class std::allocator<int> > const &)" (?imwrite@cv@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV_InputArray@debug_build_guard@1@AEBV?$vector@HV?$allocator@H@std@@@3@@Z),该符号在函数 "public: void __cdecl ImgProc::Binarize(struct EraseEnt * *,int)" (?Binarize@ImgProc@@QEAAXPEAPEAUEraseEnt@@H@Z) 中被引用

dllmain.obj : error LNK2001: 无法解析的外部符号 "bool __cdecl cv::imwrite(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::debug_build_guard::_InputArray const &,class std::vector<int,class std::allocator<int> > const &)" (?imwrite@cv@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV_InputArray@debug_build_guard@1@AEBV?$vector@HV?$allocator@H@std@@@3@@Z)

NeuralNetwork.obj : error LNK2001: 无法解析的外部符号 "bool __cdecl cv::imwrite(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::debug_build_guard::_InputArray const &,class std::vector<int,class std::allocator<int> > const &)" (?imwrite@cv@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV_InputArray@debug_build_guard@1@AEBV?$vector@HV?$allocator@H@std@@@3@@Z)

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::medianBlur(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,int)" (?medianBlur@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@H@Z),该符号在函数 "private: void __cdecl ImgProc::AdaptiveThreshold(class cv::Mat &,class cv::Mat &,double,int,double,int,int,int,class cv::Rect_<int>,enum adaptiveMethod)" (?AdaptiveThreshold@ImgProc@@AEAAXAEAVMat@cv@@0NHNHHHV?$Rect_@H@3@W4adaptiveMethod@@@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::GaussianBlur(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::Size_<int>,double,double,int)" (?GaussianBlur@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@V?$Size_@H@1@NNH@Z),该符号在函数 "private: void __cdecl ImgProc::AdaptiveThreshold(class cv::Mat &,class cv::Mat &,double,int,double,int,int,int,class cv::Rect_<int>,enum adaptiveMethod)" (?AdaptiveThreshold@ImgProc@@AEAAXAEAVMat@cv@@0NHNHHHV?$Rect_@H@3@W4adaptiveMethod@@@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::blur(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::Size_<int>,class cv::Point_<int>,int)" (?blur@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@V?$Size_@H@1@V?$Point_@H@1@H@Z),该符号在函数 "private: void __cdecl ImgProc::AdaptiveThreshold(class cv::Mat &,class cv::Mat &,double,int,double,int,int,int,class cv::Rect_<int>,enum adaptiveMethod)" (?AdaptiveThreshold@ImgProc@@AEAAXAEAVMat@cv@@0NHNHHHV?$Rect_@H@3@W4adaptiveMethod@@@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::Canny(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,double,double,int,bool)" (?Canny@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@NNH_N@Z),该符号在函数 "public: void __cdecl ImgProc::Binarize(struct EraseEnt * *,int)" (?Binarize@ImgProc@@QEAAXPEAPEAUEraseEnt@@H@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::dilate(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::debug_build_guard::_InputArray const &,class cv::Point_<int>,int,int,class cv::Scalar_<double> const &)" (?dilate@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@0V?$Point_@H@1@HHAEBV?$Scalar_@N@1@@Z),该符号在函数 "public: void __cdecl ImgProc::Binarize(struct EraseEnt * *,int)" (?Binarize@ImgProc@@QEAAXPEAPEAUEraseEnt@@H@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::warpAffine(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::debug_build_guard::_InputArray const &,class cv::Size_<int>,int,int,class cv::Scalar_<double> const &)" (?warpAffine@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@0V?$Size_@H@1@HHAEBV?$Scalar_@N@1@@Z),该符号在函数 "private: void __cdecl ImgProc::RotatoImage(class cv::Mat &,double)" (?RotatoImage@ImgProc@@AEAAXAEAVMat@cv@@N@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::cvtColor(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,int,int)" (?cvtColor@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@HH@Z),该符号在函数 "public: bool __cdecl ImgProc::LoadMat(unsigned char *,int,int,char *,struct EraseEnt * *,int)" (?LoadMat@ImgProc@@QEAA_NPEAEHHPEADPEAPEAUEraseEnt@@H@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::matchTemplate(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,int,class cv::debug_build_guard::_InputArray const &)" (?matchTemplate@cv@@YAXAEBV_InputArray@debug_build_guard@1@0AEBV_OutputArray@31@H0@Z),该符号在函数 "private: double __cdecl ImgProc::TemplateMatchingOnGray(int)" (?TemplateMatchingOnGray@ImgProc@@AEAANH@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::findContours(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::debug_build_guard::_OutputArray const &,int,int,class cv::Point_<int>)" (?findContours@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@1HHV?$Point_@H@1@@Z),该符号在函数 "private: int __cdecl ImgProc::ContourAnalysis(class cv::Mat &,class cv::Mat &)" (?ContourAnalysis@ImgProc@@AEAAHAEAVMat@cv@@0@Z) 中被引用

dllmain.obj : error LNK2001: 无法解析的外部符号 "void __cdecl cv::findContours(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::debug_build_guard::_OutputArray const &,int,int,class cv::Point_<int>)" (?findContours@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@1HHV?$Point_@H@1@@Z)

ImgProc.obj : error LNK2019: 无法解析的外部符号 "double __cdecl cv::arcLength(class cv::debug_build_guard::_InputArray const &,bool)" (?arcLength@cv@@YANAEBV_InputArray@debug_build_guard@1@_N@Z),该符号在函数 "private: int __cdecl ImgProc::ContourAnalysis(class cv::Mat &,class cv::Mat &)" (?ContourAnalysis@ImgProc@@AEAAHAEAVMat@cv@@0@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "class cv::Rect_<int> __cdecl cv::boundingRect(class cv::debug_build_guard::_InputArray const &)" (?boundingRect@cv@@YA?AV?$Rect_@H@1@AEBV_InputArray@debug_build_guard@1@@Z),该符号在函数 "private: int __cdecl ImgProc::ContourAnalysis(class cv::Mat &,class cv::Mat &)" (?ContourAnalysis@ImgProc@@AEAAHAEAVMat@cv@@0@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "double __cdecl cv::contourArea(class cv::debug_build_guard::_InputArray const &,bool)" (?contourArea@cv@@YANAEBV_InputArray@debug_build_guard@1@_N@Z),该符号在函数 "private: int __cdecl ImgProc::ContourAnalysis(class cv::Mat &,class cv::Mat &)" (?ContourAnalysis@ImgProc@@AEAAHAEAVMat@cv@@0@Z) 中被引用

dllmain.obj : error LNK2001: 无法解析的外部符号 "double __cdecl cv::contourArea(class cv::debug_build_guard::_InputArray const &,bool)" (?contourArea@cv@@YANAEBV_InputArray@debug_build_guard@1@_N@Z)

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::minEnclosingCircle(class cv::debug_build_guard::_InputArray const &,class cv::Point_<float> &,float &)" (?minEnclosingCircle@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEAV?$Point_@M@1@AEAM@Z),该符号在函数 "private: int __cdecl ImgProc::ContourAnalysis(class cv::Mat &,class cv::Mat &)" (?ContourAnalysis@ImgProc@@AEAAHAEAVMat@cv@@0@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::line(class cv::debug_build_guard::_InputOutputArray const &,class cv::Point_<int>,class cv::Point_<int>,class cv::Scalar_<double> const &,int,int,int)" (?line@cv@@YAXAEBV_InputOutputArray@debug_build_guard@1@V?$Point_@H@1@1AEBV?$Scalar_@N@1@HHH@Z),该符号在函数 "public: void __cdecl ImgProc::Binarize(struct EraseEnt * *,int)" (?Binarize@ImgProc@@QEAAXPEAPEAUEraseEnt@@H@Z) 中被引用

ImgProc.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::circle(class cv::debug_build_guard::_InputOutputArray const &,class cv::Point_<int>,int,class cv::Scalar_<double> const &,int,int,int)" (?circle@cv@@YAXAEBV_InputOutputArray@debug_build_guard@1@V?$Point_@H@1@HAEBV?$Scalar_@N@1@HHH@Z),该符号在函数 "public: void __cdecl ImgProc::DrawCircleSet(double (*)[2],int,unsigned char,unsigned char,unsigned char)" (?DrawCircleSet@ImgProc@@QEAAXPEAY01NHEEE@Z) 中被引用

dllmain.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::warpPolar(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::Size_<int>,class cv::Point_<float>,double,int)" (?warpPolar@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@V?$Size_@H@1@V?$Point_@M@1@NH@Z),该符号在函数 "void __cdecl harmonicmap2bar4binary(struct Block *,class cv::Mat &,class cv::Point_<float>,int)" (?harmonicmap2bar4binary@@YAXPEAUBlock@@AEAVMat@cv@@V?$Point_@M@3@H@Z) 中被引用

dllmain.obj : error LNK2019: 无法解析的外部符号 "double __cdecl cv::threshold(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,double,double,int)" (?threshold@cv@@YANAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@NNH@Z),该符号在函数 "void __cdecl GetProjY4Break(int *,class cv::Mat &,int,int)" (?GetProjY4Break@@YAXPEAHAEAVMat@cv@@HH@Z) 中被引用

dllmain.obj : error LNK2019: 无法解析的外部符号 "class cv::RotatedRect __cdecl cv::minAreaRect(class cv::debug_build_guard::_InputArray const &)" (?minAreaRect@cv@@YA?AVRotatedRect@1@AEBV_InputArray@debug_build_guard@1@@Z),该符号在函数 "int __cdecl ContourAnalysis4MultiCarving(struct MeasureParam *,struct Block *,int,double,bool)" (?ContourAnalysis4MultiCarving@@YAHPEAUMeasureParam@@PEAUBlock@@HN_N@Z) 中被引用

NeuralNetwork.obj : error LNK2019: 无法解析的外部符号 "public: void __cdecl cv::dnn::dnn4_v20211004::Net::setInput(class cv::debug_build_guard::_InputArray const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,double,class cv::Scalar_<double> const &)" (?setInput@Net@dnn4_v20211004@dnn@cv@@QEAAXAEBV_InputArray@debug_build_guard@4@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@NAEBV?$Scalar_@N@4@@Z),该符号在函数 "public: void __cdecl NeuralNetwork::tf_inv_net_defect(class std::vector<double,class std::allocator<double> >,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &)" (?tf_inv_net_defect@NeuralNetwork@@QEAAXV?$vector@NV?$allocator@N@std@@@std@@AEAV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@3@@Z) 中被引用

NeuralNetwork.obj : error LNK2019: 无法解析的外部符号 "class cv::Mat __cdecl cv::dnn::dnn4_v20211004::blobFromImages(class cv::debug_build_guard::_InputArray const &,double,class cv::Size_<int>,class cv::Scalar_<double> const &,bool,bool,int)" (?blobFromImages@dnn4_v20211004@dnn@cv@@YA?AVMat@3@AEBV_InputArray@debug_build_guard@3@NV?$Size_@H@3@AEBV?$Scalar_@N@3@_N3H@Z),该符号在函数 "public: void __cdecl NeuralNetwork::tf_inv_net_defect(class std::vector<double,class std::allocator<double> >,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &)" (?tf_inv_net_defect@NeuralNetwork@@QEAAXV?$vector@NV?$allocator@N@std@@@std@@AEAV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@3@@Z) 中被引用

*********.dll : fatal error LNK1120: 24 个无法解析的外部命令

解决办法:

打开工程属性-->c/c++--->预处理器---->预处理器定义,添加宏定义:CV_IGNORE_DEBUG_BUILD_GUARD

问题三

直接调用Imgproc中的两个C++函数,在实现的过程中发现imread始终读取不了图像数据和cvLoadImage却可以,几经考证,发现的确是由于库关联的问题,在Debug模式下应该选择带'd'lib,在Release模式下就选择不带'd'lib,可以选择都加进去。

以上是关于近期VS2015使用问题总结的主要内容,如果未能解决你的问题,请参考以下文章

近期VS2015使用问题总结

VS2015 及VS2013 CUDA8.0 配置

vs2015 update2 有啥用

VS2015配置环境支持opencv3库(网络方法总结)

vs2015中SQLSERVER数据库项目引用系统视图

VS2015+MySql+EF6采坑经验总结