在Xcode上使用OpenCV和opencv_contrib的错误

时间:2018-02-04 10:18:25

标签: c++ ios xcode opencv opencv-contrib

对于我在iPhone上运行的应用程序,我使用OpenCV在Xcode中使用opencv2.framework,使用objective-c和C ++作为语言。我的开发工作很顺利,直到我想引入未包含在opencv2.framework中的cv :: Tracker,但它是opencv_contrib的一部分。

  1. 我使用CMake和终端命令make和install重建并使用opencv_contrib-master从源opencv-3.4.0安装。

  2. 在Xcode中,我已经设置好了 HEADER_SEARCH_PATHS = / usr / local / include和 LIBRARY_SEARCH_PATHS = / usr / local / lib

  3. 编译时我会得到一长串错误的样式:

    Undefined symbols for architecture x86_64:
    "cv::error(int, cv::String const&, char const*, char const*, int)", 
    referenced from:
    cv::Mat::Mat(int, int, int, void*, unsigned long) in OpenCVRenderer.o
    "cv::Mat::operator=(cv::Scalar_<double> const&)", referenced from:
    cv::Mat::Mat(int, int, int, cv::Scalar_<double> const&) in 
    OpenCVRenderer.o
    cv::Mat::Mat(cv::Size_<int>, int, cv::Scalar_<double> const&) in 
    OpenCVRenderer.o
    "cv::Mat::deallocate()", referenced from:
    cv::Mat::release() in OpenCVRenderer.o
    "cv::polylines(cv::_InputOutputArray const&, cv::_InputArray const&, 
    bool, cv::Scalar_<double> const&, int, int, int)", referenced from:
    .
    .
    .
    

    我将OTHER_LDFLAGS =(opencv dylibs列表)设置为&#34; - &#34;登录

    现在我得到错误,就好像在/ usr / local / lib

    中实际找不到库一样

    例如我得到:

    ld: library not found for -libopencv_core.3.4.0.dylib
    clang: error: linker command failed with exit code 1 (use -v to see 
    invocation)
    

    有任何帮助吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

您的设置存在一些问题。

  1. 您只指定了库的位置,不是 opencv2.framework。您应该指定framework_search_path(并将您的框架链接到项目)或链接相应的库。

  2. 你说你正在构建一个iPhone应用程序,但错误显示Undefined symbols for architecture x86_64:。也就是说,要么为手机模拟器或Mac构建了应用程序。但是,您的框架很可能是为iPhone架构(armv7arm64)构建的。这种情况下,您需要重建框架。如果您构建iPhone应用,请链接dylib中的所有/usr/local/lib/库。

  3. 请注意,libopencv_core.3.4.0.dylib是普通opencv的一部分,因此该错误与opencv_contrib(尚未)无关。