我有一个编译问题,我无法弄清楚c ++中的OpenCV2.1。
这是一个我想编译的简单测试代码:
#include <iostream>
#include "cv.h"
using namespace std;
int main() {
cout << "Hello World" << endl; // prints !!!Hello World!!!
cv::Mat mtx;
return 0;
}
我是一个带有未定义引用的编译错误,如下所示
**** Build of configuration Debug for project CJMVideo ****
**** Internal Builder is used for build ****
g++ -IC:\OpenCV2.1\include\opencv -IC:\Program Files\Point Grey Research\FlyCapture2\include -O0 -g3 -Wall -c -fmessage-length=0 -osrc\CJMVideo.o ..\src\CJMVideo.cpp
g++ -LC:\OpenCV2.1\lib -LC:\Program Files\Point Grey Research\FlyCapture2\lib64 -Xlinker --enable-auto-import -oCJMVideo.exe src\CJMVideo.o -lcxcore210 -lcv210 -lhighgui210 -lml210 -lFlyCapture2
src\CJMVideo.o:C:/OpenCV2.1/include/opencv/cxmat.hpp:378: undefined reference to `cv::fastFree(void*)'
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 1438 ms.
错误是 C:/OpenCV2.1/include/opencv/cxmat.hpp:378:未定义引用`cv :: fastFree(void *)'
我相信我已经从上面的命令中正确编译了所有库...问题是什么?
由于
答案 0 :(得分:1)
即使消息显示它没有在OpenCV库上找到该符号,我必须指出,从上面粘贴的命令行,您似乎正在尝试将您的应用程序与64位编译库链接,如下所示: -LC:\Program Files\Point Grey Research\FlyCapture2\lib64
。这意味着您必须将OpenCV编译为64位,或者将两者编译为32位。
您可能缺少一个库。在Windows上,我的OpenCV项目通常会添加cv210.lib cvaux210.lib cxcore210.lib cxts210.lib highgui210.lib
,但我大多数时候都使用Visual Studio 2005。
答案 1 :(得分:1)
当使用intel TBB并行库构建OpenCV lib时,我遇到了连接cv :: fastfree的问题,没有使用TBB构建