我使用2007-06-18在我的iOS应用程序添加共享选项。
我有进口类和添加-fno-objc弧标志所有导入的类,因为它们不使用ARC。
然而,当我尝试运行应用程序,我得到解析问题,如摆:
Expected identifier or '('
Unknown type name 'NSString'
Unknown type name 'Protocol'
...
发生在NSObjCRuntime,NSZone和NSObject的这些错误。 我有必要的框架包括在内。 有任何想法吗?
包括这一形象,如果有帮助:
我对我的项目同样的问题,当我试图混合C代码(h和.C)用Objective-C代码。 找到了问题的原因:
请检查您的.PCH文件,以确保每一个Objective-C的框架#进口(如#import <UIKit/UIKit.h>
被封闭在:
#ifdef __OBJC__
#endif
如果他们这样的条件范围之外,编译器将尝试导入Objective-C框架为C源码。
希望帮助。
我只是改变Base64Transcoder.c的文件名Base64Transcoder.m,现在的项目编译。 我不知道为什么这能解决问题,但它的作品。
当我的项目中包含.cpp文件我也有同样的问题。
如果cpp文件不包含的ObjectiveC框架(如)其具有对“默认-C ++源码”型
,
但如果.cpp文件具有的ObjectiveC框架 - 它必须是“的ObjectiveC ++源”
我有同样的问题,使用C和C ++客观的C代码,我可是没有一个.PCH最简单的解决办法是进入您的构建设置 - >自定义编译器标志,并设置了“其他C标志”为“-x目标-c”,并设置‘的其他C ++标记’为‘-x目标c ++’
这将这样的伎俩和Xcode 7.2
TLDR:如果您的PCH文件就OK了,看看通过你的CPP文件头看到,如果你不小心列入目标C对象的任何头。
详细信息:我得到这个,因为我不小心包括在C ++类的头一个Objective-C类的头,间接的影响。 其结构是这样的:
Compass.h限定的纯目标C类。
ActionTracker.h定义的C ++的是理解目标C的构建体类(通过ActionTracker.mm)。
HelloWorld.h限定的纯粹C ++类。
在我原来的设置,HelloWorld.h包括ActionTracker.h,但是这是不错的方法ActionTracker.h还不包含Compass.h。 后来,我改变了我的代码,其中包括Compass.h在ActionTracker.h,然后把它放到HelloWorld.h,我得到了这些错误。
我有同样的问题,当我试图给Info.plist文件从一个目录移动到另一个。 这在某种程度上引发了XCode编辑为目标构建阶段和显著上升“编译来源”和“复制包资源”的数量。
幸运的是我的项目有,我使用的测试多个目标(即应用程序演示,应用开发,应用本地,应用1.1,应用1.2等)
所以我只是复制了未受影响的目标之一,并将其更名为(也改名为包标识符和构建方案),这显然解决了这一问题对我来说,因为它不是整个项目受到影响,但只有特定的目标。
如果您想尝试一下我的解决方案,试图从头开始创建一个新的目标,或者复制和重命名你的任何未受到影响的目标。