框架.h中的extern“ C”在一个项目中有效,但在其他项目中无效

时间:2018-10-30 13:08:17

标签: ios c objective-c frameworks ios-frameworks

我在XCode工作区中遇到一些奇怪的问题。我在Objective-C和C / C ++中都没有丰富的经验。我主要使用Unity3D / C#。

如今,我正在尝试为iOS游戏创建一些本机插件,因为我在单个Xcode工作区中创建了几个Cocoa touch Framework,也就是说我在工作区中有四个项目。

  • 项目A
  • 项目B
  • 项目C
  • D项目

所有项目都具有相同的项目配置(例如部署目标,体系结构,基本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中的唯一错误。

请同样指导我。

0 个答案:

没有答案