构建OpenCV的Hello World时未找到的符号

Symbols not found while building OpenCV's Hello World

本文关键字:符号 World OpenCV Hello 构建      更新时间:2023-10-16

我刚刚通过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项目有两个独立的步骤。首先是添加头搜索路径以便编译,这是您已经完成的。

您还必须将库添加到项目中以便进行链接。就是这部分:

  • 选择Project -> New Group,创建OpenCV frameworks组
  • 选中新组后,选择Project -> Add to Project…
  • 按"/"键进入到文件夹提示
  • 输入/usr/local/lib(如果使用MacPorts,则输入/opt/local/lib)
  • 选择libopencv_core。dylib libopencv_highgui。
  • 单击Add
  • 取消选中复制项目…并单击添加

来自OpenCV wiki的Mac OS X OpenCV Port部分