架构 i386 的未定义符号:用于 OpenCV 项目

Posted

技术标签:

【中文标题】架构 i386 的未定义符号:用于 OpenCV 项目【英文标题】:Undefined symbols for architecture i386: for OpenCV project 【发布时间】:2014-04-14 10:37:06 【问题描述】:

我正在尝试构建this project,但它显示在错误下方,

Undefined symbols for architecture i386:
  "cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)", referenced from:
      -[RRMainViewController colorSobelEdge:isVertical:] in RRMainViewController.o
  "cv::split(cv::Mat const&, std::vector<cv::Mat, std::allocator<cv::Mat> >&)", referenced from:
      -[RRMainViewController colorSobelEdge:isVertical:] in RRMainViewController.o
  "cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)", referenced from:
      -[RRMainViewController floodFillPostprocess:WithColor:] in RRMainViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经添加了 OpenCV.framework 并在 .pch 文件中添加了这一行

#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif

在项目中添加了这个库

libstdc++.6.0.9.dylib libc++.dylib libz.1.2.5.dylib

但仍然出现上述错误..请帮助...thanx提前..

这是我的构建阶段的屏幕截图

================================================ ==================已解决This@karthika 的回答帮助了我。

【问题讨论】:

反对者请发表评论,以便我们知道这个问题的问题所在。 好像找不到你的opencv文件所在目录?你检查路径了吗? @Constantine 我已在根文件夹中添加了 Opencv.framework,因此将框架搜索路径更改为根目录和未找到目录错误消失但 Opencv 仍然出现错误。 【参考方案1】:

构建阶段未添加 Opencv 框架或其他一些文件。转到项目设置->构建阶段->将二进制文件与库链接并检查列表中是否存在 opencv。否则单击 + 并添加它 然后进入构建阶段以编译源代码并确保 RRMainViewController.m 存在于列表中。否则点击 + 并添加它

这个答案也可能对您有所帮助:Undefined symbols for architecture i386: _OBJC_CLASS_$_SKPSMTPMessage", referenced from: error

【讨论】:

感谢回答。这两个文件都存在于构建路径中。请看截图 再试一件事,在左侧面板中单击您的班级名称RRMainViewController.m,然后将扩展名更改为.mm,即RRMainViewController.mm。有时 C++ 代码需要扩展 .mm 才能运行,即使类代码是用 Objective-c 编写的,但 opencv 是用 C++ 编写的 感谢您的建议,尝试过不影响任何事情.. :(

以上是关于架构 i386 的未定义符号:用于 OpenCV 项目的主要内容,如果未能解决你的问题,请参考以下文章

Sharekit - 架构 i386 的未定义符号:

架构 i386 的未定义符号:“_SCNetworkReachabilitySetCallback”

架构 i386 的未定义符号 - Lipo 错误?

“架构 i386 的未定义符号”问题

架构 i386 的未定义符号:_FlutterMethodNotImplemented

架构 i386 的未定义符号:“_OBJC_CLASS_$_RCTBundleURLProvider”