我刚刚通过 MacPorts 安装了 openCV, 我还将库文件夹添加到编译器的设置中。 但是当尝试构建以下代码时,
#include <cv.h>
#include <highgui.h>
int main(int argc, char **argv) {
cvNamedWindow("My Window", 1);
IplImage *img = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 1);
CvFont font;
double hScale = 1.0;
double vScale = 1.0;
int lineWidth = 1;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC, hScale, vScale,
0, lineWidth);
cvPutText(img, "Hello World!", cvPoint(200, 400), &font,
cvScalar(255, 255, 0));
cvShowImage("My Window", img);
cvWaitKey();
return 0;
}
我在构建时收到一条消息,指出未找到所有符号。
我做错了什么?
**** Build of configuration Release for project OpenCv ****
make all
Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -I/opt/local/include/opencv -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
Finished building: ../main.cpp
Building target: OpenCv
Invoking: MacOS X C++ Linker
g++ -o "OpenCv" ./main.o
Undefined symbols:
"_cvNamedWindow", referenced from:
_main in main.o
"_cvCreateImage", referenced from:
_main in main.o
"_cvShowImage", referenced from:
_main in main.o
"_cvPutText", referenced from:
_main in main.o
"_cvWaitKey", referenced from:
_main in main.o
"_cvInitFont", referenced from:
_main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [OpenCv] Error 1
**** Build Finished ****
最佳答案
编译和链接 OpenCV 项目有两个独立的步骤。首先是添加 header 搜索路径以便编译,您已经完成了。
您还必须将库添加到项目中才能链接。这是这部分:
- 选择 Project -> New Group 并创建一个名为 OpenCV frameworks 的组
- 选择新组后,选择“项目”->“添加到项目...”
- 按“/”键获取“转到文件夹”提示
- 输入/usr/local/lib(如果您使用 MacPorts,则输入/opt/local/lib)
- 选择 libopencv_core.dylib、libopencv_highgui.dylib 以及项目所需的任何其他库。
- 点击添加
- 取消选中复制项目...并单击添加
这来自 Mac OS X OpenCV Port OpenCV wiki 的一部分。
关于c++ - 构建 OpenCV 的 Hello World 时找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703786/