-1

我创建了一个使用 ZXing 条码扫描库的 iPhone 项目。我使用 CocoaPods 添加了 ZXing,当我在我的系统上编译它时它可以完美运行(Mountain Lion with Xcode 4.5 (4G182))。但是当我将它传递给负责为企业分发生成签名 ipa 的人时,据我所知,他也在使用相同版本的 Xcode,他在编译时看到以下解析错误:

Parse Issue
Expected unqualified-id in file included from /The/Absolute/Path/to/Pods/ZXing/objc/src/ZXing/ZXBinarizer.mm

突出显示的行是:

#import <ZXing/ZXBinarizer.h>
        ^

我能够通过 WebEx 查看他的系统,并检查了标题搜索路径,并且显然通过 CocoaPods 配置的值确实解析为文件的实际位置。

当我单击问题导航器中的“解析问题”行时,它仅显示:

../../ZXing/objc/src/ZXing/ZXBinarizer.h
^

我在网上搜索了很多解决方案,我看到很多关于“预期的不合格 ID”的引用,但其中大部分是由于格式错误的代码。

关于Xcode还有很多我不明白的地方,所以我希望有人会告诉我,我在这里忽略了一些简单的东西。

4

3 回答 3

0

发布指向正在编译的确切代码的链接会有所帮助。

您可以使用clang -E查看预处理后的代码(所有#imports 扩展)后的样子,然后diff将系统上的预处理输出与同事系统上相同命令的输出进行对比。

我确实在 http://code.google.com/p/zxing/source/browse/trunk/objc/src/ZXing/ZXBinarizer.h 中看到他们指的是NSObject没有首先#importing <Foundation/Foundation.h>。这是一个坏主意,但这可能不是您的实际问题。(如果它是罪魁祸首,我会期待不同的错误消息。)

您是否 100% 确定您的同事将 ZXBinarizer.mm 编译为 Objective-C++,而不是常规 C++?

您是否 100% 确定 Xcode 没有为您提供错误的任何特定文件和行信息?如果 Xcode 真的只是指向#import一行,那么您可以发布该行之前和之后的 10 行,以及 #imported 文件的前 10 行吗?

于 2012-10-04T21:22:10.967 回答
0

我最终不得不放弃使用 CocoaPods 进行依赖管理,而只是手动包含该项目。由于问题出在别人的机器上,但我自己运行良好,我无法确定真正的原因。在我直接将 ZXing 包含在我的项目中之后,他就能够编译它。

于 2012-10-05T22:46:53.187 回答
0

smcmahon,我在使用 CocoaPods 构建 iOS 项目时遇到了一个非常相似的问题,并看到了那些奇怪的错误,并且能够找出问题所在。确保 CocoaPods 创建的符号链接(如ZXing/ZXBinarizer.h)确实是符号链接,而不仅仅是其中包含文件路径的常规文本文件。

更详细的解释在我的博客中:http ://www.egeek.me/2013/01/26/note-about-building-cocoapods-powered-ios-projects/

希望这会有所帮助。

于 2013-01-27T20:36:01.520 回答