[BUG]Js与Object-c 通信时与GameKit 冲突

我通过如下方法使object-c 与 js 进行通信

#include "ScriptingCore.h"
ScriptingCore::getInstance()->evalString(“require(‘Utils’).getOcData(“GameCenter ID”)”,nullptr);

后为了接入GameCenter 工程中添加了GameKit库


代码中加入了#import <GameKit/GameKit.h>, 编译就报错

在google上搜了,没找到解决方案,不知道哪位大神有解决的没有。

-########################
目前找到一个解决方案, 就是不要再同一个Object-C文件中同时include即可,可分开include
############################

嗯,这两者的命名有冲突,而且 Spidermonkey 的这几个 API 也没有命名空间,所以无法通过命名空间来区分,只能分开 include 了

你好,我1.4.2也出现这问题了,请问分开include是指分开引入哪几个头文件?

确保不要在同一个文件中同时引用 GameKit 和 Spidermonkey 的 jsapi.h 等头文件,间接引用也不行,比如 ScriptingCore.h 就引用了 jsapi.h

我这样include也不行,该怎么解决呢?
#import “Foundation/Foundation.h”
#import “AMapLocationKit/AMapLocationKit.h”

#import “cocos2d_specifics.hpp”
#import “ScriptingCore.h”
#import “jsfriendapi.h”
#import “jsapi.h”
#import “cocos2d.h”
#import “mozilla/Maybe.h”
#import “mozilla/TypeTraits.h”
#import “cocos/scripting/js-bindings/manual/ScriptingCore.h”

#import “AudioToolbox/AudioToolbox.h”
#import “AMapFoundationKit/AMapFoundationKit.h”

Include 不行的情况下,要拆分功能,把 JSB 相关功能,和 GameKit 相关功能彻底拆分开来,用两个类实现

好的,我试下,谢谢

我重新创建了一个类:JSBApi.h JSBApi.mm,然后引入ScriptingCore.h还是一样的错误啊

JSBApi.h
#import “Foundation/Foundation.h”

@interface JSBApi : NSObject

@end

JSBApi.m
#import “JSBApi.h”
#import “ScriptingCore.h”

@implementation JSBApi

@end

不用这么麻烦,直接把后缀名m改成mm解决。。。。。。