架构 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 项目的主要内容,如果未能解决你的问题,请参考以下文章
架构 i386 的未定义符号:“_SCNetworkReachabilitySetCallback”