无法从终端编译c ++文件

时间:2015-07-29 05:06:59

标签: c++ xcode macos opencv

我正在使用OpenCV录制来自网络摄像头的视频。我使用Xcode 6.4编写(C ++)代码来记录OS X Yosemite 10.10.4上的视频。当我从Xcode编译并运行它时它工作得很好但是当我想编译(使用g ++ -o main main.cpp)它从终端产生以下错误:

    Undefined symbols for architecture x86_64:
      "cv::VideoWriter::write(cv::Mat const&)", referenced from:
          _main in main-027833.o

      "cv::VideoWriter::VideoWriter(cv::String const&, int, double, cv::Size_<int>, bool)", referenced from:
          _main in main-027833.o

      "cv::VideoWriter::~VideoWriter()", referenced from:
          _main in main-027833.o

      "cv::VideoCapture::VideoCapture(int)", referenced from:
          _main in main-027833.o

      "cv::VideoCapture::~VideoCapture()", referenced from:
          _main in main-027833.o

      "cv::VideoCapture::operator>>(cv::Mat&)", referenced from:
          _main in main-027833.o

      "cv::Mat::deallocate()", referenced from:
          cv::Mat::release() in main-027833.o

      "cv::String::deallocate()", referenced from:
          cv::String::~String() in main-027833.o

      "cv::String::allocate(unsigned long)", referenced from:
          cv::String::String(char const*) in main-027833.o

      "cv::imshow(cv::String const&, cv::_InputArray const&)", referenced from:
          _main in main-027833.o

      "cv::waitKey(int)", referenced from:
          _main in main-027833.o

      "cv::fastFree(void*)", referenced from:
          cv::Mat::~Mat() in main-027833.o

      "cv::VideoCapture::get(int) const", referenced from:
          _main in main-027833.o

      "cv::VideoCapture::isOpened() const", referenced from:
          _main in main-027833.o

    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command fail

ed with exit code 1 (use -v to see invocation)

我知道它,因为它无法链接OpenCV lib。我尝试使用&#34; vi

$ HOME / .bash_profile中&#34;然后设置路径

"export PATH=$PATH:/usr/local/include" 

"export PATH=$PATH:/user/local/lib"

但它没有帮助。我也试过

g++ -o main  main.cpp -l `pkg-config opencv --cflags --libs`

但没有用。 我不知道如何指定路径。任何帮助,将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:1)

最后,经过3天的挫折,我找到了解决方案。我正在为那些也在为同样的问题而苦苦挣扎的人分享。

您需要做的就是在从终端编译代码时添加您在Xcode“其他链接器标志”中添加的所有标志。所以这是适用于我的命令。

g++ main.cpp -o main -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_calib3d -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_highgui

我没有包含所有标记,因为我只处理视频,但您可能需要添加或更少,具体取决于您正在处理的内容。

相关问题