为什么XCode 4在构建期间无法找到我的.h文件?

时间:2011-06-08 19:54:18

标签: xcode4

我有一个不会构建的项目,因为编译器(?)似乎无法找到.h文件。我已经尝试使用完整路径,相对路径和设置项目搜索路径(标题和用户标题),似乎没有任何工作。我觉得非常奇怪的是,即使是完整路径也会出错:没有这样的文件或目录(文件确实存在于指定的路径中)。

有人可以就可能出现的问题提出一些建议吗?我当然会很感激。

import语句:

#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

4 个答案:

答案 0 :(得分:3)

我对ZXing的依赖也有很多痛苦。这里有一些技巧可以帮助其他有类似问题的人。

此行执行导入:

#import <zxing/common/Counted.h>

要使编译器找到Counted.h,必须指定标题搜索路径。

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

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

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

因此,在src目录下,您会找到zxing

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

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

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

这是ZXingWidget目标的构建设置的页眉搜索路径。

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

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

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

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

答案 1 :(得分:3)

我发布这个是为了让像我这样的新手简单地将zxing qr reader集成到他们的项目中,并将关闭带到与zxing集成相关的几个线程。

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

  

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

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

2。 去zxing - &gt; iphone - &gt; ZXingWidget。

  

拖动ZXingWidget.xcodeproj文件并将其放到Xcode项目的“Groups and Files”侧栏的根目录下。

[你现在应该在那里列出ZXingWidget.xcodeproj,它必须下拉并列出它的内容]

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

  

您的项目文件 - &gt;目标 - &gt; '您的项目名称' - &gt;构建阶段 - &gt;链接二进制文件库。

     

您应该找到名为“Workspace”的文件夹。从内部添加'libZXingWidget.a'。

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

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

  

../斑马线/ iphone / ZXingWidget /类

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

  

../斑马线/ CPP /型芯/ SRC

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

[如果您决定使用不同的文件结构,请务必正确引用您的文件夹。]

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

  

AVFoundation

     

AudioToolbox

     

corevideo的

     

CoreMedia

     

libiconv的

     

地址簿

     

AddressBookUI

7

  

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

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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)我按照以下步骤处理xco​​de错误https://stackoverflow.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运行项目。

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