14

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

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

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

4

4 回答 4

30

将 GPUImage 框架添加到 XCode 项目可能会很棘手。因此,我添加了详细的分步说明,其中包含有关如何执行此操作的图像。

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

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

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

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

  4. build.sh 创建一个名为build的文件夹并生成已编译的二进制文件并将它们转储到以下文件夹:Release-iPhoneRelease-iPhoneOSRelease-iphonesimulator等文件夹。 在此处输入图像描述

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

    笔记:

    • Release-iphone文件夹包含两个子文件夹:includelib
    • include文件夹包含所有头.h文件
    • lib文件夹包含名为libGPUImage.a的已编译二进制版本文件
    • 我们现在需要简单地配置 XCode 以使用 .h 和 .a 文件。**
  8. 在项目资源管理器中选择您的项目 >目标下的项目名称> 选择构建阶段 >使用库展开链接二进制文件

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

  10. 在此过程中,还将以下 GPUImage 的依赖框架/库 CoreMedia、CoreVideo、OpenGLES、AVFoundation、QuartzCore 添加Link Binary With Libraries部分 在此处输入图像描述

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

  12. 在项目资源管理器中选择您的项目 >目标下的项目名称> 选择构建设置 > 并键入搜索路径以查看搜索路径部分。

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

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

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

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

于 2014-02-20T01:27:32.837 回答
6

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

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

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

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

于 2012-05-01T22:14:21.863 回答
5

我将相对路径添加到“标题搜索路径”,但仍然存在“未找到”的错误。

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

可以帮助你。

在此处输入图像描述

于 2013-04-08T08:05:49.037 回答
2

最后,我意识到关键字是relative!我将GPUImage源文件放在我的项目根目录中: 在此处输入图像描述

在我解决问题之前,我添加标题搜索路径是:

$(PROJECT_DIR)/GPUImage/framework

$(PROJECT_DIR)/GPUImage/framework/iOS

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

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

希望能帮助到你。

于 2016-02-04T06:07:51.960 回答