我有一个不会构建的项目,因为编译器(?)似乎无法找到.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
答案 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。 主要内容 - 绝对确保您拥有最新版本。
[到现在为止,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)
我浏览了许多关于如何解决这个问题的博客文章。这个对我很有帮助。
问题是标题搜索路径未正确定义。 所以我......
1)下载了zxing 2.1
2)从我复制的下载:iphone,cpp,objc和自述文件并粘贴在一个名为“zxing”的文件夹中
3)我将新文件夹“zxing”添加到我的项目(在我的Mac上)而不是xcode应用程序。
4)从创建的文件夹zxing我将zxingwidget.xproje拖到我的xcode项目
5)我按照你在所有博客中找到的所有步骤
解决此问题的关键
6)我按照以下步骤处理xcode错误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运行项目。
希望这对其他人也有帮助。