对于我在iPhone上运行的应用程序,我使用OpenCV在Xcode中使用opencv2.framework,使用objective-c和C ++作为语言。我的开发工作很顺利,直到我想引入未包含在opencv2.framework中的cv :: Tracker,但它是opencv_contrib的一部分。
我使用CMake和终端命令make和install重建并使用opencv_contrib-master从源opencv-3.4.0安装。
在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列表)设置为&#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)
有任何帮助吗? 谢谢。
答案 0 :(得分:0)
您的设置存在一些问题。
您只指定了库的位置,不是 opencv2.framework
。您应该指定framework_search_path
(并将您的框架链接到项目)或链接相应的库。
你说你正在构建一个iPhone应用程序,但错误显示Undefined symbols for architecture x86_64:
。也就是说,要么为手机模拟器或Mac构建了应用程序。但是,您的框架很可能是为iPhone架构(armv7
和arm64
)构建的。这种情况下,您需要重建框架。如果您构建iPhone应用,请不链接dylib
中的所有/usr/local/lib/
库。
请注意,libopencv_core.3.4.0.dylib
是普通opencv
的一部分,因此该错误与opencv_contrib
(尚未)无关。