1

对于在 iPhone 上运行的应用程序,我使用 OpenCV,在 Xcode 中使用 opencv2.framework,并将 Objective-c 和 C++ 作为语言。在我想引入不包含在 opencv2.framework 中但属于 opencv_contrib 的 cv::Tracker 之前,我的开发运行良好。

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

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

编译时,我得到一长串样式错误:

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 列表) 前面有一个“-”号

现在我收到错误,好像没有找到库,而实际上在 /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)

有什么帮助吗?谢谢你。

4

1 回答 1

0

您的设置有几个问题。

  1. 您只指定了在哪里可以找到库,而不是 opencv2.framework. 您应该指定framework_search_path(并将您的框架链接到项目)或链接相应的库。

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

请注意,这libopencv_core.3.4.0.dylib是正常的一部分,因此该错误与(还)opencv无关。opencv_contrib

于 2018-02-05T08:12:37.240 回答