首页 > 解决方案 > 框架 .h 中的 extern "C" 在项目中有效,但在其他项目中无效

问题描述

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

现在我正在尝试为 iOS 游戏创建一些原生插件,同样我Cocoa touch Framework在单个 Xcode 工作区中创建了几个,假设我在工作区中有四个项目。

所有项目都具有相同的项目配置(如部署目标、架构、基础操作系统等)

现在项目 A 是一个通用框架,由其他 3 个项目使用,很少有常见任务,例如 - 与统一通信 - 从 NSString 获取 C 字符串,反之亦然 - 从 NSObject 或 NSDictionary 创建 JSON 数据字符串

这些所有方法都写Objective-C.mm文件中。同一个文件还编写了C桥接代码,以通过“extern“C”通过 other-custom-framework/Unity-code 访问。

.h文件在正确的Objective-C接口和C.extern C

此设置在项目 B、项目 C、项目 D 中完美运行,没有任何问题/错误。

该问题仅与extern "C"今天创建的新“Cocoa Touch 框架”项目“Project E”有关。

当我尝试在项目 A 的头文件中构建项目 E 时,在 where 的行中抛出错误extern "C"

error: expected identifier or '(' extern "C" {

当我尝试构建任何其他 3 个项目时,它工作正常,没有任何问题。并在基于 Unity 的 iOS 游戏中完美地作为框架工作。

我试图将项目 E 的构建设置与其他项目相匹配,但我找不到任何更改。

所以我陷入了这个奇怪的问题。我也在谷歌上搜索了同样的内容。大多数帖子表明使用#ifdef __cpluscplus

#ifdef __cplusplus
extern "C" {
#endif
// Method Declaration
#ifdef __cplusplus
}
#endif

这解决了项目 E 的问题,但我仍然没有得到实际问题,为什么项目 E 中的唯一错误而不是其他项目中的唯一错误。

请指导我。

标签: ioscobjective-cframeworksios-frameworks

解决方案


推荐阅读