我是学习 openCV 的新手,并试图在这里重现一个在线示例“人脸识别”程序:http://www.cognotics.com/opencv/servo_2007_series/part_5/index.html 。 然而,我在几个函数中遇到了“无法解析的外部符号”错误:
cvEigenDecomposite
cvCalcEigenObjects
indNearestNeighbor(float *) // functions defined locally by the user
loadTrainingData(struct CvMat *) // functions defined locally by the user
当我弄乱链接器时,会出现“未解析的外部符号”。奇怪的是,它对于我迄今为止在其他网站上所做的其他示例来说效果很好。我的推理是,前两个函数 cvEigenDecomposite
和 cvCalcEigenObjects
需要我尚未链接到的额外 .lib 对象,而其他两个函数依赖于前两个函数。所以我的问题是这些函数是否需要链接额外的 .lib 对象?
这是我当前链接到的 .lib 对象的列表:
opencv_core231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_features2d231d.lib
opencv_calib3d231d.lib
谢谢!
编辑:
错误:
1>main.obj:错误 LNK2019:函数“void __cdecl learn(void)”(?learn@@YAXXZ) 中引用了无法解析的外部符号 _cvEigenDecomposite
1>main.obj:错误 LNK2019:函数“void __cdecl doPCA(void)”中引用的无法解析的外部符号 _cvCalcEigenObjects (?doPCA@@YAXXZ)
1>main.obj:错误 LNK2019:函数“void __cdecl recognize(void)”(?recognize@@YAXXZ) 中引用了无法解析的外部符号“int __cdecl findNearestNeighbor(float *)”(?findNearestNeighbor@@YAHPAM@Z) )
1>main.obj:错误 LNK2019:函数“void __cdecl recognize(void)”(?loadTrainingData@@YAHPAPAUCvMat@@@Z) 中引用了无法解析的外部符号“int __cdecl loadTrainingData(struct CvMat * *)”(?loadTrainingData@@YAHPAPAUCvMat@@@Z)认识@@YAXXZ)
1>C:\Users\Lyukshins\Dropbox\Programming\OpenCV2\Face Recognition\Debug\Face Recognition.exe: fatal error LNK1120:4 个无法解析的外部
依赖关系:
C:\opencv\build\include
C:\opencv\build\include\opencv2
C:\opencv\build\include\opencv
包含的目录:
C:\opencv\build\x86\vc10\lib
C:\opencv\build\include
最佳答案
cvEigenDecomposite
和 cvCalcEigenObjects
位于 opencv_legacy231d.lib
正如您所说,另外两个函数是本地函数。因此,它们必须在调用它们的函数之前在代码中声明。
关于c - 使用 cvEigenDecomposition 等时出现 Unresolved external symbol 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213800/