在Xcode中找不到opencv2 / opencv.hpp文件

时间:2015-12-23 06:34:40

标签: ios xcode opencv

我已经构建了openCV来获取opencv2.framework。我将此添加到我的xcode iOS项目中,转到“构建阶段 - >链接二进制文件库”,然后尝试在我的项目中包含“opencv2 / opencv.hpp”。 我找不到错误“opencv2 / opencv.hpp”。但该文件存在于框架中。我试图在网上找到一个解决方案,但没有任何对我有用。

我试图将其包含在的文件是.mm文件。我把“编译源代码”作为“objective-c ++”。任何帮助都会很棒。

9 个答案:

答案 0 :(得分:9)

对我有用的东西非常简单:

*注意IOS与OS X项目的差异

FOR IOS:

将opencv下载(对于3.0.0只是一种拖放的东西)放入项目特定的Xcode文件夹中。然后将帧搜索路径设置为$(PROJECT_DIR)。帧搜索路径位于构建设置下。不需要设置其他路径。

最后,右键单击导航器窗格,然后单击“将文件添加到...”,以便从项目文件夹中添加opencv库。

FOR OSX:

查看Tim的教程:https://www.youtube.com/watch?v=OVSPfUmNyOw

答案 1 :(得分:5)

我通过向FRAMEWORK_SEARCH_PATHS添加绝对路径来解决问题,我有需要使用的框架:

Edition of the Framework Search Path

你应该明显使用自己的路径。 ; - )

答案 2 :(得分:4)

花了我4个小时来弄明白这一点。这就是我如何使用它: 与opencv框架一起在构建阶段添加以下框架:

加速,资产图书馆,AVFoundation ,CoreGraphics ,CoreImage ,CoreMedia ,CoreVideo ,QuartzCore ,UIKit ,基金会。

然后,在.pch文件中,在UIKit和Foundation导入之前添加以下行:

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

答案 3 :(得分:3)

在我的情况下,标题文件的符号链接被破坏了。这是因为克隆了以下很棒的示例项目:

https://github.com/BloodAxe/OpenCV-Tutorial

在克隆项目中,无法再访问头文件。从官方opencv ios下载站点(OpenCV for iOS)重新导入opencv2.framework后,标题再次可用。 XCode应如下所示:

XCode opencv headers

以下是包含损坏标题的Xcode项目的屏幕截图。 对于损坏的头文件,xcode项目如下所示:

XCoe with broken opencv headers

答案 4 :(得分:1)

我在我的项目中使用openCV并且用cocoapods实现它是不可能的,因为库的版本太旧了,所以我决定将它实现为静态库。在项目中创建文件夹并在其中添加库,在构建设置中找到libraryframework搜索路径,并添加指向您的openCV文件夹的链接。它会工作没有任何错误。您还应该在prefixPatch中添加openCV头文件。

  

更多细节说明100%有效:

1)从官方网站下载框架:OpenCV

2)在项目目录中创建名为 External_SDK

的文件夹

3)将 Opencv 框架放在此文件夹中,然后将其拖放到Xcode项目(文件夹)中,并使用您的应用程序的目标成员资格(非App_test)。

4)在Xcode项目中搜索yourPrefixHeaderFileName.pch并在文件顶部添加以下行:

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

5)之后你应该在 .h 文件中导入包含,为什么要包括?因为它的CPP库。如果您想使用import keywoard访问库,请执行以下操作:#import <EXAMPLE>

6)在构建设置中搜索框架搜索路径,并添加指向 EXTERNAL_SDK 文件夹的链接。直接从您的文件夹中读取框架。查找并更改 ALWAYS_SEARCH_USER_PATHS = YES 并在 HEADER_SEARCH_PATHS 中添加 $(继承)和/ usr / include / FRAMEWORK_PATH

希望这个答案对某人有所帮助。

最佳做法是致电

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>

仅限标题文件。

答案 5 :(得分:1)

确保在目标的构建设置中,您将搜索路径部分中的框架搜索路径设置为框架在您的框架中所处的正确路径目录。您可以通过单击空白区域中框架搜索路径的右侧,单击+符号并添加$(PROJECT_DIR)然后再次单击+并添加$(继承)来执行此操作。确保框架位于您手头项目的主目录中。这对我有用,因为我遇到了同样的问题。

希望这有帮助!

答案 6 :(得分:0)

根据我的经验,没有必要添加这么多其他框架。相反,只需要opencv2并在prefixheader.pch中添加“#import”

除非opencv2 framework文件夹在您的项目目录中,否则必须如上所述设置正确的框架搜索路径。

注意:不要在Framework Search Paths中设置错误的位置,因为有两个“YourProjectName”。设置第一个(属于TARGETS),而不是第二个(属于PROJECT)。我犯了错误。

答案 7 :(得分:0)

以下是我对此的回答。

  1. 环境:XCode 8.1

  2. 下载页面:http://opencv.org/downloads.html。选择iOS的任何链接。

  3. 重要步骤:在下载opencv2.framework时,必须使用“.zip”格式,而不是“.framework”格式,然后将其解压缩到opencv2.framework。这很奇怪,但应该有效。同时,如果解压缩的是opencv2.framework,则必须将其重命名为opencv2.framework。 enter image description here

  4. 只需将框架拖放到iOS项目即可。无需任何设置。您可以参考此进行测试:www.youtube.com/watch?v = ywUBHqxwM5Q。

答案 8 :(得分:0)

当我去Target时遇到了一些问题 - &gt; Build Phases - &gt; Link Binary With Libraries。当我从那里添加opencv2.framework时,我的应用程序将无法启动。

相反,我只是将框架拖放到XCode中的“Frameworks”目录下并且工作正常。我没有改变任何其他事情。