Xcode10 使用OC调用JS报错

没使用OC调用JS的时候一切正常,当引入#include “cocos/scripting/js-bindings/jswrapper/SeApi.h"头文件的时候,就开始报"string” file not found,导致这个错误的原因是XCode10对C++标准库不支持了,因此jswrapper目录下C++代码中#include 这样的语句全部报错。

请问这种情况应该怎么解决,自己复制Xcode9的标准库过来吗?

@huanxinyin
引擎组的大佬过来指导一下。

@337031709
@jare

我这边xcode10.2.1完全没问题。你把#include换成#import试一下?

导入C++的库试试?

stl的标准库在xcode10中应该是不支持了,除非从xcode9里面复制过来才行。

我搜了下看到是 “从Xcode10起,苹果摒弃了对libstdc++库的支持转而支持libc++库了”

试过了,不行的。
你引用一个标准库的文件试一下,应该也不可以的。例如#include

对的,目前就是这样的情况,std库的方法都不能用了。jswrapper中用了很多std的内容,例如#include ,#include

不支持stl这种事肯定是不可能的,无非是换了个标准库而已,你再好好检查下你的工程设置

有解决方法了么,关注ing

Xcode 不可能不支持 C++ 库,再说它只是个 IDE,不会引起这方面的问题。这个问题应该是同时引入 OC 库和 C++ 库冲突导致的。我之前解决过类似的问题,就是调整 OC 和 C++ 引入的顺序,不过忘记怎么解决了,就是各种调整后好了。

.m文件里#include "cocos/scripting/js-bindings/jswrapper/SeApi.h"就会报错,错误报在#include string。
link的library是按照穿山甲文档来的。https://ad.toutiao.com/union/media/union/download

https://awhisper.github.io/2018/06/08/libstdc-inxcode10ios12/
难道要这么解决?

.m 文件不能包含 C++ 的头文件啊,需要改成 .mm。

2赞

请问怎么解决的

// 文件名.mm
static void runJavaScriptCode(const char* script) {
    se::AutoHandleScope hs;
    se::ScriptEngine::getInstance()->evalString(script);
}

谢谢,可以了