OpenCV编译错误未定义引用`cv :: createEigenFaceRecognizer(int,double)'

时间:2013-03-25 02:31:27

标签: c++ visual-studio-2010 opencv dll mingw

我一直试图解决这个问题三天,但我对C ++很陌生,而且我似乎已经碰壁了。

我想更改一个opencv源文件,特别是bytefish编写的eigenfaces函数。我想让它返回许多面孔而不是一面。我相信我想出了这一部分。

问题在于,当我重新编译opencv时,无论我使用什么dll,在编译演示面部识别代码时,我都会遇到一些错误:

SET: IncDir = C:\opencv\build\include
$(INCDIR) = C:\opencv\build\include
SET: LibDir = C:\opencv\build\x86\mingw\lib
$(LIBDIR) = C:\opencv\build\x86\mingw\lib
g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib"     facerec_eigenfaces.cpp -lopencv_calib3d243  -lopencv_contrib243 -lopencv_core243     -lopencv_features2d243 -lopencv_flann243 -lopencv_gpu243 -lopencv_highgui243 -lopencv_imgproc243 -lopencv_legacy243 -lopencv_ml243 -lopencv_nonfree243 -lopencv_objdetect243 -lopencv_photo243 -lopencv_stitching243 -lopencv_video243 -lopencv_videostab243 -o facerec_eigenfaces
Process started >>>
C:\Users\Nate\AppData\Local\Temp\ccDRRGhr.o:facerec_eigenfaces.cpp:(.text+0x8a0):     undefined reference to `cv::createEigenFaceRecognizer(int, double)'
C:\Users\Nate\AppData\Local\Temp\ccDRRGhr.o:facerec_eigenfaces.cpp:(.text+0xdf5): undefined reference to `cv::applyColorMap(cv::_InputArray const&, cv::_OutputArray const&, int)'
collect2: ld returned 1 exit status
<<< Process finished.
SET: Libs = -lopencv_calib3d243  -lopencv_contrib243 -lopencv_core243     -lopencv_features2d243 -lopencv_flann243 -lopencv_gpu243 -lopencv_highgui243 -lopencv_imgproc243 -lopencv_legacy243 -lopencv_ml243(...)
$(LIBS) = -lopencv_calib3d243  -lopencv_contrib243 -lopencv_core243 -lopencv_features2d243 -lopencv_flann243 -lopencv_gpu243 -lopencv_highgui243 -lopencv_imgproc243 -lopencv_legacy243 -lopencv_ml243 -lopen(...)
facerec_eigenfaces

我已经看到了几个类似的问题,我尝试实施其中列出的所有方法,但无济于事。这是我的第一个C ++项目,所以我可能会遗漏一些基本的东西,但看起来通过使用所有的opencv指南,它会不正确地构建contrib dll。

如果我需要在此处加入任何其他内容,我会。我讨厌这个。

更新

我得到了这部分工作。看起来好像我正在混合和匹配用Visual C构建的dll文件,以及非可视化C构建的文件,我认为这不重要,但无论如何,代码都能正常工作。

基本上我一直使用Notepad ++作为我的IDE,配置为使用G ++和MinGW进行编译,然后我用visual C更改了一些文件并尝试将它们插入到我以前的项目中。然后我用Notepad ++重新编译它会爆炸。

为了使它工作,我使用Visual C作为我的唯一编辑。我按照OpenCV安装指南(google)的说明构建了它,并且仅使用Visual C进行了更改。然后我也使用Visual C编译。

我是一个C ++新手,所以如果有人想对正在发生的事情给出更好的答案,我会投票给它最好的答案。

0 个答案:

没有答案