【问题标题】:What should I do if I can't find the GPUImage.h header for the GPUImage framework?如果找不到 GPUImage 框架的 GPUImage.h 头文件,我该怎么办?
【发布时间】:2012-04-30 10:47:12
【问题描述】:

我创建了一个示例应用程序来执行凹凸失真,使用 GPUImage framework。我将此框架添加到我的应用程序中,但我看到以下错误

找不到词法或预处理器问题“GPUImage.h”文件。

我已将 -ObjC 标志添加到其他链接器标志,但我仍然看到此错误。如何解决这个问题并让我的应用程序编译?

【问题讨论】:

    标签: objective-c ios filter


    【解决方案1】:

    将 GPUImage 框架添加到 XCode 项目可能会很棘手。因此,我添加了详细的分步说明和图片说明如何操作。

    静态编译方法(详细的解决方案,以免我们搞砸了)

    这是静态编译方法。在这基本上我们将使用 ./build.sh 文件编译框架。只需将其添加到我们的 XCode 项目中,然后配置 XCode 以正确使用它。

    1. 从 Github 下载 GPUImage 并将其提取(或直接克隆)。
    2. 转到终端中的GPUImage文件夹
    3. 运行 ./build.sh

      注意:这将为您 mac 上的所有 sdk 编译并创建即用型二进制文件。

    4. build.sh 创建一个名为 build 的文件夹并生成编译后的二进制文件并将它们转储到以下文件夹:Release-iPhoneRelease-iPhoneOS、Release-iphonesimulator 等文件夹。

    5. 对于 iPhone 使用 Release-iphone(这也适用于模拟器)。
    6. 复制(不是拖放)Release-iphone 到您的 XCode 项目的根目录,以便我们拥有框架的本地副本。
    7. 现在将 iPhone 拖放 Release-iphone 到您的 XCode 项目中。确保选中“复制到..”选项。

      注意:

      • 这个 Release-iphone 文件夹包含两个子文件夹:includelib
      • include 文件夹包含所有头文件 .h 文件
      • lib 文件夹包含名为 libGPUImage.a 的已编译二进制版本文件
      • 我们现在需要简单地配置 XCode 以使用 .h 和 .a 文件。**
    8. 在项目浏览器中选择您的项目 > Targets 下的项目名称 > 选择 Build Phases > 展开 Link Binary With Libraries

    9. libGPUImage.a 添加到 Link Binary With Libraries 部分。您可能需要右键单击 libGPUImage.a,然后在 Finder 中打开,最后将其拖放。

    10. 在我们做的时候,还要添加以下 GPUImage 的依赖框架/库 CoreMedia、CoreVideo、OpenGLES、AVFoundation、QuartzCoreLink Binary With Libraries 部分

    11. 现在,让我们配置 .h 标头。

    12. 在项目资源管理器中选择您的项目 > Targets 下的项目名称 > 选择 Build Settings > 并输入 search paths 以查看 search paths 部分。

    13. 通过单击值字段打开标题搜索路径

    14. lib 文件夹拖放到该弹出窗口。注意:如果显示绝对路径,请将其更改为看起来 $(SRCROOT)/path/to/lib/。 (您应该拥有与您的 xcode 项目相关的框架,请参阅第 6 步)。

    15. 对于 库搜索路径 也重复 11 和 12。

    附加提示:您可以将 .h 文件添加到 Library Search PathsHeaders Search Paths,您可以将它们设为 递归 >。我有一个名为 Dependencies 的主根文件夹,其中保存了所有依赖项,例如 MySDK 框架,包括 Release-iPhone。而且我在依赖项(根文件夹)只有一个搜索路径,并使其递归

    【讨论】:

    • 这只是我在 SO 上看到的最好的答案之一。
    • @MrSMAK 谢谢。我花了一段时间才弄清楚:)
    • @RajaRao 是的,我错过了一些东西谢谢 ;)
    • 得到错误 :xcodebuild: error: SDK "iphoneos7.0" 无法定位。 ./build.sh 时在终端中
    • @Hector,嘿 Hector,你能解释一下你在 ./build.sh 中改变了什么吗?
    【解决方案2】:

    您是否按照project page 上自述文件中的所有说明进行操作?从安装说明:

    您还需要找到框架标头,因此在您的 项目的构建设置将标题搜索路径设置为相对 从应用程序到 framework/ 子目录的路径 GPUImage 源目录。使此标头搜索路径递归。

    如果您看到上述错误,则表示您没有将 Header Search Paths 指向相对于您的项目安装 GPUImage 的正确目录,和/或没有单击左侧的复选框使这些搜索路径递归。

    我在this answer 中展示了一些你需要去哪里设置它的屏幕截图,它解释了 Core Plot 框架的类似内容。同样的原则也适用,只是你需要找到你安装 GPUImage 框架的位置。

    【讨论】:

      【解决方案3】:

      我在“Header Search Paths”中添加了相对路径,但是仍然出现“未找到”的错误。

      然后,我将路径添加到“用户标题搜索路径”,它就可以了。

      可以帮到你。

      【讨论】:

      • 也这样做并且它有效,然后它似乎将自己从“用户标题搜索路径”中删除......奇怪。不过谢谢你提到这一点。
      【解决方案4】:

      终于,我发现关键字是relative! 我将 GPUImage 源文件放在我的项目根目录中:

      在我解决问题之前,我添加 Header Search Paths 是:

      $(PROJECT_DIR)/GPUImage/framework

      $(PROJECT_DIR)/GPUImage/framework/iOS

      并使它们递归,但错误仍然存​​在,所以我将路径更改为:

      GPUImage/framework 并使其递归,然后它就可以工作了。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-08
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多