macos - 在OS/X上与OpenCV链接错误

标签 macos opencv linker linker-errors

当我尝试构建OpenCV应用程序时:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    if (argc < 2) {
        cout << "usage: " << argv[0] << " image.png" << endl;
        return 1;
    }
    Mat im = imread(argv[1]);
    return 0;
}

我收到一个链接器错误:
bash-3.2$ g++ `pkg-config --cflags --libs opencv` fs.cpp
Undefined symbols for architecture x86_64:
  "cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
      _main in fs-EK7vjB.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是我要链接的库(通过自制软件安装的OpenCV):
bash-3.2$ pkg-config --libs opencv
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_calib3d.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_contrib.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_core.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_features2d.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_flann.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_gpu.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_highgui.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_imgproc.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_legacy.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_ml.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_nonfree.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_objdetect.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_ocl.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_photo.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_stitching.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_superres.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_ts.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_video.dylib /usr/local/Cellar/opencv/2.4.5/lib/libopencv_videostab.dylib

可读性更高的列表:
bash-3.2$ for f in $(pkg-config --libs opencv); do echo $(basename $f); done
libopencv_calib3d.dylib
libopencv_contrib.dylib
libopencv_core.dylib
libopencv_features2d.dylib
libopencv_flann.dylib
libopencv_gpu.dylib
libopencv_highgui.dylib
libopencv_imgproc.dylib
libopencv_legacy.dylib
libopencv_ml.dylib
libopencv_nonfree.dylib
libopencv_objdetect.dylib
libopencv_ocl.dylib
libopencv_photo.dylib
libopencv_stitching.dylib
libopencv_superres.dylib
libopencv_ts.dylib
libopencv_video.dylib
libopencv_videostab.dylib

我在做什么错,如何使事情正常?

最佳答案

看来您没有为系统链接正确的库。尝试CMake创建您的项目文件(有关详细信息,请参阅我的答案here)。

关于macos - 在OS/X上与OpenCV链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20069114/

相关文章:

macos - 是否有关于为 Mac OS X 创建输入法的任何引用或信息?

macos - Cordova 看不到已安装的 Android SDK

android - 链接 OpenCV 库的顺序是什么?

python - 图像中的 numpy 元素比较

architecture - vDSO:为什么 linux 只将它们用于与时间相关的功能?

linker - lld 链接器是 ld 和 gold 的替代品吗?

SwiftUI:在修改 EnvironmentObject 的 View body 中调用函数导致无限循环和应用程序崩溃

python - time.time() 在重复调用中漂移

c++ - 该表达式在 C++ 中意味着什么

gcc - gcc 和 ld 中与位置无关的可执行文件的 -fPIE 选项是什么?