0

我在 Windows8.1 x86 上使用 OpenCV 2.4.6 和 Visual Studio 2008。当我调试我的程序时,它会告诉我 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 中用 G 替换 A 我解决了这个问题,但后来它给了我另一个错误

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

我该如何解决这个问题?

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

4

1 回答 1

0

你有链接问题。在您的库中用 G 替换 A 将无济于事。确保您已将所有库添加到其他依赖项中。以下是最必要的 lib 文件,确保您已将其包含在内。

highgui210d.lib 
cxcore210d.lib 
cv210d.lib

完成此操作后,如果仍然出现错误,请转到 opencv 的 lib 文件夹(C:\opencv\build\x86\vc12\lib)并将所有 lib 文件添加到其他依赖项(右键单击您的项目选择属性->配置属性->链接器->输入,然后在右侧窗格中找到其他依赖项,然后添加项目的所有 lib 文件名)。

于 2014-03-27T11:07:33.050 回答