我在下面的代码片段中编译
cv::Mat frame ;
tld->processImage(frame);
和获取以下链接器错误
错误LNK2019:无法解析的外部符号“公共(public):void __thiscall tld::TLD::processImage(class cv::Mat)”(?processImage @ TLD @ tld @@ QAEXVMat @ cv @@@ Z)在函数_main中引用
现在,我将代码更改为如下所示
Mat frame ;
tld->processImage(0);
和低于链接器错误
错误C2664:'tld::TLD::processImage':无法将参数1从'int'转换为'cv::Mat'
没有构造函数可以采用源类型,或者构造函数重载解析度不明确
问题是当我调用方法tld-> processImage(frame)时,我收到此链接器错误“无法解析的符号”,但是当我使用不正确的类型作为参数调用此方法时,它又给出了另一个“无法转换参数”错误,因此确认该方法在那儿。
仅使用processImage()方法会出现此问题。
我能够毫无问题地调用其他“tld”方法。
任何帮助表示赞赏。
谢谢
最佳答案
我认为您很可能缺少cv::Mat
的参考。如果TLD类在其他地方工作,那几乎可以肯定是因为在进行此方法调用的位置没有cv
的包含。
如果cv
包含多个包含,则应将其添加到头文件的顶部;
#ifndef CV
#define CV
并在文件底部添加;
#endif
这将确保文件仅被编译一次,并在我经常编写c++时为我解决了很多链接器问题。
关于c++ - VS 2008中的奇怪链接错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13212441/