ios - 框架 .h 中的 extern "C" 在项目中有效,但在其他项目中无效
问题描述
我在 XCode 工作区中遇到了一些奇怪的问题。我在 Objective-C 和 C/C++ 方面都没有太多经验。我主要使用 Unity3D/C#。
现在我正在尝试为 iOS 游戏创建一些原生插件,同样我Cocoa touch Framework
在单个 Xcode 工作区中创建了几个,假设我在工作区中有四个项目。
- 项目A
- 项目 B
- 项目 C
- 项目 D
所有项目都具有相同的项目配置(如部署目标、架构、基础操作系统等)
现在项目 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 中的唯一错误而不是其他项目中的唯一错误。
请指导我。
解决方案
推荐阅读
- wordpress - 站点问题调试设置为 true
- extjs - Ext.js - 是否可以通过开放工具和 ext.js 7 使用 es6 类语法
- python - 识别在 selenium python 中使用 AngularJS 开发的元素
- jquery - 添加到 SVG 地图
- graphql - 如何使用 IoC 访问 HotChocolate (GraphQL) 请求的查询
- python - "notebook==6.0.2 cannot be installed on this environment" on python 3.5 environment
- sql - SQL查询遍历记录列表并插入缺失
- ruby-on-rails - 更新运输重量和包装以更准确,因为我当前的重量和包装不反映现实
- internet-explorer-11 - Google Tag Manager Preview 在 IE11 中不起作用
- javascript - JavaScript 在 XHR 中的 this.response 中不起作用