(OpenCV)得到一个“未解决的外部符号”错误[重复]
Posted
技术标签:
【中文标题】(OpenCV)得到一个“未解决的外部符号”错误[重复]【英文标题】:(OpenCV) Getting a 'unresolved external symbol' error [duplicate] 【发布时间】:2014-03-23 17:25:19 【问题描述】:我正在使用本教程(来自http://hxr99.blogspot.com/2011/12/opencv-examples-showing-image.html),但出现了许多错误:
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main( int argc, const char** argv )
Mat image;
String inputName;
for( int i = 1; i < argc; i++ )
inputName.assign( argv[i] );
if( inputName.empty() || (isdigit(inputName.c_str()[0]) && inputName.c_str()[1] == '\0') )
if( inputName.size() )
image = imread( inputName, 1 );
else
if(image.empty()) cout << "Couldn't read image" << endl;
imshow("Test",image);
错误:
1>------ Build started: Project: Project1, Configuration: Debug x64 ------
1> main.cpp
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPEAX@Z) referenced in function "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ)
1>main.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::_InputArray::_InputArray(class cv::Mat const &)" (??0_InputArray@cv@@QEAA@AEBVMat@1@@Z) referenced in function main
1>main.obj : error LNK2019: unresolved external symbol "public: void __cdecl cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QEAAXXZ) referenced in function "public: void __cdecl cv::Mat::release(void)" (?release@Mat@cv@@QEAAXXZ)
1>main.obj : error LNK2019: unresolved external symbol "public: void __cdecl cv::Mat::copySize(class cv::Mat const &)" (?copySize@Mat@cv@@QEAAXAEBV12@@Z) referenced in function "public: class cv::Mat & __cdecl cv::Mat::operator=(class cv::Mat const &)" (??4Mat@cv@@QEAAAEAV01@AEBV01@@Z)
1>main.obj : error LNK2019: unresolved external symbol "int __cdecl cv::_interlockedExchangeAdd(int *,int)" (?_interlockedExchangeAdd@cv@@YAHPEAHH@Z) referenced in function "public: class cv::Mat & __cdecl cv::Mat::operator=(class cv::Mat const &)" (??4Mat@cv@@QEAAAEAV01@AEBV01@@Z)
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::_InputArray const &)" (?imshow@cv@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV_InputArray@1@@Z) referenced in function main
1>main.obj : error LNK2019: unresolved external symbol "class cv::Mat __cdecl cv::imread(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?imread@cv@@YA?AVMat@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function main
1>c:\users\gerard\documents\visual studio 2012\Projects\Project1\x64\Debug\Project1.exe : fatal error LNK1120: 7 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我不知道发生了什么。非常感谢任何帮助。 顺便说一句,我使用的是 Visual Studio 2012,并且我(希望)拥有正确的 PATH 和库。
【问题讨论】:
我认为是的,您需要为 VS2012 提供正确的库路径。 你没有告诉链接器使用哪些库 我关注了这个blog,够不够,还是缺少一些库? 【参考方案1】:我在使用 OpenCV 时遇到了类似的问题。 您可能缺少链接器的一个或多个 .lib 文件。
您可以通过以下方式添加它们:
-
在 Visual Studio 中右键单击您的项目。
选择“属性”
注意:“链接器 > 常规 > 其他库目录”
转到“链接器 > 输入 > 其他依赖项”
我在“附加库目录”下为 VS 指定了 OpenCV 库目录。我浏览到这个位置并在“附加依赖项”中添加了我丢失的 .lib 文件。
例如(我用的是2.4.9调试,所以我加了):
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
如果您使用的是发行版,请确保仅使用发行版库!
根据您设置项目的方式,您可能需要执行类似的操作。
【讨论】:
以上是关于(OpenCV)得到一个“未解决的外部符号”错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章