为啥 XCode 4 在构建过程中找不到我的 .h 文件?

Posted

技术标签:

【中文标题】为啥 XCode 4 在构建过程中找不到我的 .h 文件?【英文标题】:Why can't XCode 4 find my .h files during a build?为什么 XCode 4 在构建过程中找不到我的 .h 文件? 【发布时间】:2011-06-08 19:54:18 【问题描述】:

我有一个无法构建的项目,因为编译器 (?) 似乎找不到 .h 文件。我尝试使用完整路径、相对路径并设置项目搜索路径(标题和用户标题),但似乎没有任何效果。我觉得很奇怪的是,即使使用完整路径也会出现错误:No such file or directory(该文件确实存在于指定路径中)。

任何人都可以就可能出现的问题提出一些建议吗?我一定会很感激的。

导入语句:

#import <Foundation/Foundation.h>
#import <zxing/common/Counted.h>
#import <zxing/Result.h>
#import <zxing/BinaryBitmap.h>
#import <zxing/Reader.h>
#import <zxing/ResultPointCallback.h>

标题位于:

/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src/zxing

标头搜索路径为:

$(inherited)
"$(SRCROOT)/zxing/common"

/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src

包含文件的完整路径:

/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src/zxing/Result.h

【问题讨论】:

请发布相关的include 声明、您的包含路径设置、系统上标头的确切位置。 @Spokane:编辑您的问题,甚至不要尝试在 cmets 中发布代码。 导入语句:#import #import #import #import # import #import Headers位于:/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src/zxing Header搜索路径为:$(inherited ) 和 "$(SRCROOT)/zxing/common" 请查看我之前的评论:使用信息编辑您的问题,并包含您尝试包含的包含文件的完整路径以及 SRCROOT 是什么 如何找到SRCROOT的内容? 【参考方案1】:

我也对 ZXing 的依赖感到相当痛苦。这里有一些提示,希望对遇到类似问题的其他人有所帮助。

这一行做了一个导入:

#import &lt;zxing/common/Counted.h&gt;

为了让编译器找到Counted.h,必须指定头搜索路径。

现在,因为import 语句将查找Counted.h 相对于两个子文件夹zxing/common,我们需要给它zxing 的父文件夹。

在这种情况下,父文件夹将类似于:

/ .. my full path here ../cpp/core/src/

所以,在src 目录下,您会找到zxing

我们如何在 Xcode 中配置它?最好相对做。否则,项目将在其他用户的计算机上失败。

为此,我们指定一个相对于项目目录的路径。如下:

$(PROJECT_DIR)/../cpp/core/src

这在 ZXingWidget 目标的构建设置的标题搜索路径中。

这个头文件路径的关键是指定要搜索的相对目录。在我们的例子中,我们指定相对于$(PROJECT_DIR) 的搜索。该变量指定了我们的子项目ZXingWidget的目录。

其他注意事项。请注意在目标的构建设置中指定这些。如果您在项目级别执行此操作,您仍然需要使用 $(inherited) 变量在目标级别指定它。

另外,不要忘记构建脚本非常有用。查看 -I 标志包含的标头路径。

作为一种通用的调试技术,我喜欢在我的设置中指定绝对路径。这提供了一个干净的构建,我知道可以包含这些文件,以及它们肯定在哪里。完成后,我使用$(PROJECT_DIR) 指定相对路径。

【讨论】:

【参考方案2】:

我发布这篇文章是为了让像我这样正在将 zxing qr 阅读器集成到他们的项目中的新手变得简单,并关闭与 zxing 集成相关的几个线程。

1。 主要事情 - 绝对确保您拥有最新版本。

http://zxing.googlecode.com/svn/trunk/

[到现在,1 月 18 日,您将不再对 zxing/common/ 文件夹有任何问题。最简单的解决方法:获取最新代码!]

2。 转到 zxing -> iphone -> ZXingWidget。

将 ZXingWidget.xcodeproj 文件拖放到 Xcode 项目的“组和文件”侧边栏的根目录中。

[您现在应该在此处列出 ZXingWidget.xcodeproj,它必须下拉并列出其内容]

3。 在同一个地方,项目导航器,选择:

您的项目文件 -> 目标 -> '您的项目名称' -> 构建阶段 -> 将二进制文件与库链接。

您应该找到一个名为“工作区”的文件夹。从内部添加“libZXingWidget.a”。

4。 仍处于 Build 阶段,展开 Target Dependencies 并添加 ZXingWidget。

5。 选择构建设置并搜索标题搜索路径。 您需要将 2 条记录添加到标题搜索路径。您不需要将值与用户标题搜索路径相关联。您可以通过双击右侧的列来实现此目的。将出现一个小的弹出窗口。使用 + 按钮添加第一条记录。添加:

../zxing/iphone/ZXingWidget/类

现在使用 + 按钮添加第二条记录。添加:

../zxing/cpp/core/src

这些是我使用的值。这些值有效,因为我使用同一个文件夹来托管我的项目和 zxing 文件夹。

[确保正确引用您的文件夹,以防您决定使用不同的文件结构。]

6。 返回 Build Phases 并添加以下所需的 ios 框架:

AV基金会

音频工具箱

核心视频

核心媒体

libiconv

通讯录

地址簿用户界面

7.

创建一组文件 (.h&.m) 并将其 .m 扩展名更改为 .mm

8。 通过在之前创建的文件中包含以下内容来测试集成:

#import <ZXingWidgetController.h>
#import <QRCodeReader.h>

此时,只有在您运行的不是最新版本时,您才会遇到丢失的文件。希望这会有所帮助。

【讨论】:

如果您需要扫描除二维码以外的任何其他内容,我建议您查看 ZXingObjC - 我采用的路径相同。 github.com/TheLevelUp/ZXingObjC 像魅力一样工作!不必依赖于 ZXingWidget 源代码的特定位置会很好。最好单独构建 ZXingWidget,并将必要的头文件和库存档复制到应用程序项目中。【参考方案3】:

需要检查的一些事项: - 文件权限 - 你可以使用 xcodebuild 从命令行构建吗?

【讨论】:

我重新开始,新的代码,现在它可以工作了......谢谢你们的建议。我很感激。【参考方案4】:

我浏览了许多关于如何解决此问题的博客文章。这对我帮助很大。

http://alwawee.com/wordpress/2011/12/01/zxingwidgetcontroller-h-not-found-zxing-installation-problem-solution/

问题在于没有正确定义标题搜索路径。 所以我...

1) 下载zxing 2.1

2) 从我复制的下载中:iphone、cpp、objc 和自述文件并粘贴到名为“zxing”的文件夹中

3) 我将新文件夹“zxing”添加到我的项目(在我的 Mac 上)而不是 xcode 应用程序。

4) 从创建的文件夹 zxing 我将 zxingwidget.xproje 拖到我的 xcode 项目中

5) 我按照您在所有博客中找到的所有步骤进行操作

解决这个问题的关键

6) 我按照这个步骤处理 xcode 错误https://***.com/a/14703794/1881577

7) 我按照此步骤处理头路径文件错误http://alwawee.com/wordpress/2011/12/01/zxingwidgetcontroller-h-not-found-zxing-installation-problem-solution/

重要提示:我必须按照步骤 7) 执行两次,我必须选择项目目标并分配标题路径,我必须选择项目项目并分配标题路径。

8) 构建 zxingwidget 项目(从方案选择选项)

9) Build 运行项目。

希望这对其他人也有帮助。

【讨论】:

以上是关于为啥 XCode 4 在构建过程中找不到我的 .h 文件?的主要内容,如果未能解决你的问题,请参考以下文章

xcode 7中找不到facebooksdk.h文件错误

在 iTunes 中找不到构建

在 Xcode 8.2.1 中找不到“Cordova/CDV.h”文件

在 ReskIt 中找不到 xcodebuild 头文件

Cocoapod:为啥 Xcode 构建过程试图找到已经从我的项目中删除的库

在带有框架的 XCode 5 中找不到文件