当前位置: 首页 > 知识库问答 >
问题:

OpenCV for iOS-在Xcode中链接库

白博赡
2023-03-14

作为团队项目的一部分,我打算使用open CV实现机器人的障碍物检测。我现在已经有了在OS X上运行的功能代码,并使用我的笔记本摄像头来检测接近它的障碍物。然而,机器人运行iOS(它是一个iPad的核心),因此需要我为iOS构建。显然,由于体系结构不匹配,链接器现在不接受OS X库文件。到目前为止,它的设置如下:
1。/usr/local/lib添加到库搜索路径
2。/usr/local/include添加到标头搜索路径
3。C++语言方言更改为C++11
4。库添加到其他链接器标志(-lopencv_calib3d等)
5。有效体系结构设置为i386x86_64

为了对iOS执行必要的修改,I首先将有效的体系结构更改为ARMv7ARMv7sARM64。然后,我尝试按照iOS中OpenCV:Installation的说明,要求我执行openCv/platforms/iOS/build_framework.py脚本。这构建了一个框架文件和一个文件夹build。我通过构建阶段->与库的链接二进制文件将框架文件添加到我的Xcode项目中。根据python脚本的自述文件“该脚本为iOS构建OpenCv.framework。构建的框架是通用的,可以用于构建应用程序,并在iOS模拟器或实际设备上运行。”然而,当我试图为iOS模拟器构建产品时(尤其是),我会得到无法数出的体系结构x86_64链接器错误的未定义符号。据我所知,上面链接的安装说明没有其他内容。

我是不是漏掉了什么?将头/库搜索路径调整为不包含任何内容或包含来自/usr/local/lib的OS X OpenCV库文件是徒劳的。我的直觉是,这与python脚本在opencv2.framework文件旁边创建的文件夹build有关。构建的内容为文件夹:
iphoneOS-arm64
iphoneOS-armv7
iphoneOS-armv7s
iphoneImulator-i386
iphoneImulator-x86_64

它们又包括:

我需要将这些文件夹的任何部分链接到我的项目中吗?

我很感激你给我任何建议。

热烈问候,
马克

编辑:这里是我在为iOS模拟器编译时得到的链接器错误。当编译另一个体系结构x(例如armv7)时,我会得到完全相同的错误,不同之处在于体系结构x未定义符号一行。

编辑3:剩余14个错误。

体系结构x86_64的未定义符号:“_CVBufferRelease”,引用自:-[CaptureDelegate CaptureOutput:DidoutputSampleBuffer:FromConnection:]在opencv2(Cap_AvFoundation.o)中-[CaptureDelegate updateImage]在opencv2(Cap_AvFoundation.o)中CVCaptureRefile::RetrieveFramePixelBuffer()在opencv2(Cap_AvFoundation.o)中“_CVBufferRetain”,引用自.o)opencv2(Cap_avFoundation.o)中的CVCaptureFile::RetrieveFramePixelBuffer(),“_CVPixelBufferCreateWithBytes”,引用自:CVVideOwriter_avFoundation::WriteFrame(_IPLImage Const*),引用自:-[CaptureDelegate updateImage],引用自:-[CaptureDelegate updateImage],引用自:-[CaptureDelegate updateImage],引用自图像]在openc中opencv2(Cap_avFoundation.o)中的v2(Cap_avFoundation.o)CVCaptureFile::RetrieveFramePixelBuffer()“_CVPixelBufferGheight”,引用自opencv2(Cap_avFoundation.o)中的:-[CaptureDelegate updateImage]中的(Cap_avFoundation.o)中的CvCaptureFile::RetrieveFramePixelBuffer()ElBufferLockBaseAddress“,引用自:-[CaptureDelegate updateImage]在opencv2(Cap_AvFoundation.o)CvCaptureFile::RetrieveFramePixelBuffer()在opencv2(Cap_AvFoundation.o)”_CVPixelBufferRelease“,引用自:CVVideOwriter_AvFoundation.o)”_CVPixelBufferRelease“,引用自:CVVideOwriter_AvFoundation.o)”_IPLImage Const*)在)“_KCVPixelBufferHeightKey”,引用自:opencv2(Cap_AvFoundation.o)中的CVCaptureCam::StartCaptureDevice(int)opencv2(Cap_AvFoundation.o)中的CVCaptureCam::SetWidthHeight()“_KCVPixelBufferPixelFormattypeKey”,引用自:CVCaptureCam::StartCaptureDevice(int)opencv2(Cap_AvFoundation.o)中的CVCaptureCam::StartCaptureDevice(int)opencv2(CAP_AVFoundation.o)中的recam::StartCaptureDevice(int)CVCaptureCam::SetWidthHeight()在opencv2(CAP_AVFoundation.o)中的ld:找不到体系结构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

共有1个答案

赫连宏伯
2023-03-14

在OpenCV官方网站上查看iOS教程。您将获得有关依赖项的信息。

 类似资料:
  • 我有一个奇怪的问题,当我构建和运行时,我经常得到这个错误

  • 问题内容: 我有一个带有按钮的应用程序,该应用程序可以打开Facebook页面。它检查用户是否已安装Facebook,并应在应用程序中打开页面。如果未安装,则仅使用Safari打开页面。但是,它不起作用。如果用户安装了Facebook,我怀疑这与地址错误有关: 问题答案: 问题在于您的Facebook URL的格式,因此请注意格式。我使用此扩展名打开网址。您以希望它们尝试打开的顺序为它提供了一组U

  • 问题内容: 我正在尝试使用Boost的Asio构建项目,但遇到了一些麻烦。最初,我试图在没有任何其他库的情况下构建项目,因为所有内容都应该放在头文件中。 我尝试构建的程序如下所示: 可以发现这里在加速的网站。 因此,最初我只有: 这导致以下错误: 看来我需要系统库。因此,我按照此处的入门指南中的说明进行操作,该指南为我提供了位于 / usr / include / boost_1_40_0 / s

  • 问题内容: 我有3个数据库。1链接到2,2链接到3。我想从1查询3中的表。我尝试了third_db_tab @ 3 @ 2,但它不起作用。想知道这是否可能,如果可能,语法是什么。 问题答案: 我认为您可以通过创建同义词来做到这一点。在数据库2中创建一个同义词: 然后在数据库1中创建第二个同义词: 这未经测试(我现在没有运行三个数据库),但是我认为Oracle足够聪明,可以解开同义词。

  • 我正在尝试使用ssziparchive框架。我试图通过cocoaPods“安装”它(我做不到),后来,我通过迦太基尝试。我以为第二个选项已经安装了它,但它没有。它给了我这样一个错误: Ld/users/alumno/library/developer/xcode/deriveddata/webr-enbsuevwixwhtweyjzzmrsectubh/build/products/debug-i

  • 问题内容: 我在类中为我的方法添加了一些描述。这就是我实现这一目标的方式: 如何使带下划线的方法可点击?我希望引用它,以便当用户单击它时,他们将被定向到特定的网页进行 文档编制。 可能吗 预先感谢,任何帮助将不胜感激 问题答案: Xcode本身支持文档注释,可在快速帮助中(在⌥单击符号时在弹出窗口中以及在快速帮助检查器中⌥⌘2)生成智能呈现的文档。 现在,符号文档注释基于丰富的游乐场注释所使用的M