ZXBinarizer.mm中包含的文件中的Unqualified-id

时间:2012-09-26 17:29:29

标签: objective-c xcode zxing objective-c++

我创建了一个使用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配置的值确实解析为文件的实际位置。

当我点击问题导航器中的“Parse Issue”行时,它只显示:

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

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

关于Xcode还有很多我不理解的事情,所以我希望有人会告诉我,我忽略了一些简单的事情。

3 个答案:

答案 0 :(得分: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行,并且该文件的前10行是#imported吗?

答案 1 :(得分:0)

我最终不得不恢复使用CocoaPods进行依赖关系管理,只需手动包含项目。既然问题发生在别人的机器上,但我自己工作得很好,我无法确定真正的原因。在我将ZXing直接包含在我的项目中后,他能够编译它。

答案 2 :(得分:0)

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

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

希望这会有所帮助。