我在XCode工作区中遇到一些奇怪的问题。我在Objective-C和C / C ++中都没有丰富的经验。我主要使用Unity3D / C#。
如今,我正在尝试为iOS游戏创建一些本机插件,因为我在单个Xcode工作区中创建了几个Cocoa touch Framework
,也就是说我在工作区中有四个项目。
所有项目都具有相同的项目配置(例如部署目标,体系结构,基本OS等)
现在,项目A是一个通用框架,其他3个项目使用的框架很少,例如 -团结沟通 -从NSString获取C字符串,反之亦然 -从NSObject或NSDictionary创建JSON数据字符串
所有这些方法都是用Objective-C
文件中的.mm
编写的。同一文件还编写了C
桥代码,可通过“ extern“ C”通过其他自定义框架/统一代码进行访问。
.h
文件在适当的接口中声明了与Objective-C
相同的方法,在C
中声明了与extern C
相同的方法。
此设置可以完美运行,而在Project B,Project C,Project D中没有任何问题/错误。
extern "C"
仅与今天创建的新的“ Cocoa Touch框架”项目“ Project E”有关。
当我尝试构建项目E时,在项目extern "C"
的行中,在项目A的头文件中引发错误。
error: expected identifier or '(' extern "C" {
当我尝试构建其他3个项目时,一切正常。并且可以在基于Unity的iOS游戏中完美地用作框架。
我试图将Project E的构建设置与其他项目进行匹配,但找不到任何更改。
所以我陷入了这个奇怪的问题。我也在Google上搜索了相同的内容。大多数帖子指示使用#ifdef __cpluscplus
#ifdef __cplusplus
extern "C" {
#endif
// Method Declaration
#ifdef __cplusplus
}
#endif
这解决了Project E上的问题,但是,我仍然没有得到实际的问题,为什么Project E中唯一的错误而不是其他Project中的唯一错误。
请同样指导我。