OpenCV错误:LNK2019

时间:2013-10-29 15:42:21

标签: c++ visual-studio-2008 opencv x86 lnk2019

我正在使用OpenCV 2.4.6和Visual Studio 2008与Windows8.1 x86。 当我调试我的程序时,它向我发出9个错误信号:

1>FYD_control.obj : error LNK2019: unresolved external symbol "int __stdcall cv::waitKey(int)" (?waitKey@cv@@YGHH@Z) referenced in function _main
1>FYD_control.obj : error LNK2019: unresolved external symbol "void __stdcall cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::_InputArray const &)" (?imshow@cv@@YGXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV_InputArray@1@@Z) referenced in function _main
1>FYD_control.obj : error LNK2019: unresolved external symbol "double __stdcall cv::threshold(class cv::_InputArray const &,class cv::_OutputArray const &,double,double,int)" (?threshold@cv@@YGNABV_InputArray@1@ABV_OutputArray@1@NNH@Z) referenced in function _main
1>FYD_control.obj : error LNK2019: unresolved external symbol "void __stdcall cv::cvtColor(class cv::_InputArray const &,class cv::_OutputArray const &,int,int)" (?cvtColor@cv@@YGXABV_InputArray@1@ABV_OutputArray@1@HH@Z) referenced in function _main
1>FYD_control.obj : error LNK2019: unresolved external symbol "void __stdcall cv::medianBlur(class cv::_InputArray const &,class cv::_OutputArray const &,int)" (?medianBlur@cv@@YGXABV_InputArray@1@ABV_OutputArray@1@H@Z) referenced in function _main
1>FYD_control.obj : error LNK2019: unresolved external symbol "void __stdcall cv::fastFree(void *)" (?fastFree@cv@@YGXPAX@Z) referenced in function "public: __thiscall cv::Mat::~Mat(void)" (??1Mat@cv@@QAE@XZ)
1>FYD_control.obj : error LNK2019: unresolved external symbol "int __stdcall cv::_interlockedExchangeAdd(int *,int)" (?_interlockedExchangeAdd@cv@@YGHPAHH@Z) referenced in function "public: void __thiscall cv::Mat::release(void)" (?release@Mat@cv@@QAEXXZ)
1>FYD_control.obj : error LNK2019: unresolved external symbol "void __stdcall cv::error(class cv::Exception const &)" (?error@cv@@YGXABVException@1@@Z) referenced in function "public: int & __thiscall cv::Mat::at<int>(int,int)" (??$at@H@Mat@cv@@QAEAAHHH@Z)
1>C:\Users\___________________________\Debug\FYD2_Control.exe : fatal error LNK1120: 8 unresolved externals
1>Build log was saved at "file://c:\Users\_________________\Debug\BuildLog.htm"
1>FYD2_Control - 9 error(s), 0 warning(s)

我已经分析了所有内容,我注意到在这个错误中我有

(?waitKey@cv@@YGHH@Z)
(?imshow@cv@@YGXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV_InputArray@1@@Z)
(?threshold@cv@@YGNABV_InputArray@1@ABV_OutputArray@1@NNH@Z)
(?cvtColor@cv@@YGXABV_InputArray@1@ABV_OutputArray@1@HH@Z)
(?medianBlur@cv@@YGXABV_InputArray@1@ABV_OutputArray@1@H@Z)
(?fastFree@cv@@YGXPAX@Z)
(?_interlockedExchangeAdd@cv@@YGHPAHH@Z)
(?error@cv@@YGXABVException@1@@Z)

如果我对.lib进行分析,则会有相同的结果,但使用A代替第一个G

(?waitKey@cv@@YAHH@Z)
(?imshow@cv@@YAXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV_InputArray@1@@Z)
(?threshold@cv@@YANABV_InputArray@1@ABV_OutputArray@1@NNH@Z)
(?cvtColor@cv@@YAXABV_InputArray@1@ABV_OutputArray@1@HH@Z)
(?medianBlur@cv@@YAXABV_InputArray@1@ABV_OutputArray@1@H@Z)
(?fastFree@cv@@YAXPAX@Z)
(?_interlockedExchangeAdd@cv@@YAHPAHH@Z)
(?error@cv@@YAXABVException@1@@Z)

在.lib中用A替换A我解决了这个问题,但后来又给了我一个错误

The procedure entry point ?fastFree@cv@@YGXPAX@Z could not be
located in the dynamic link library

我该如何解决这个问题?

对不起我的英文,感谢任何人都会回答。

1 个答案:

答案 0 :(得分:0)

你有链接问题。在你的图书馆用G替换A不会有帮助。确保已在其他依赖项中添加了所有库。以下是最必要的lib文件,请确保包含它。

highgui210d.lib 
cxcore210d.lib 
cv210d.lib

如果你仍然得到错误,那么转到opencv的lib文件夹(C:\ opencv \ build \ x86 \ vc12 \ lib)并将所有lib文件添加到其他依赖项中(右键单击你的项目选择属性 - &gt;配置属性 - &gt;链接器 - >输入然后在右窗格中找到项目的其他依赖项,然后添加所有lib文件名。