c++自动绑定到js

https://github.com/cocos2d/bindings-generator
按照这里的文档,配置环境后,最后执行test.py,提示生成成功,但是却找不到js文件在哪里
PYTHON_BIN not defined, use current python.
generating userconf.ini…
/Users/zhouyoukai/tools/bindings-generator/libclang
Generating bindings for test…
Using userconfig
[(‘androidndkdir’, ‘/Users/zhouyoukai/Library/Android/sdk/android-ndk-r9b’), (‘clangllvmdir’, ‘/Users/zhouyoukai/Library/Android/sdk/android-ndk-r9b/toolchains/llvm-3.3/prebuilt/darwin-x86_64’), (‘cocosdir’, ‘/Users/zhouyoukai’), (‘jsbdir’, ‘/Users/zhouyoukai/cocos/scripting/js-bindings’), (‘cxxgeneratordir’, ‘/Users/zhouyoukai/tools/bindings-generator’), (‘extra_flags’, ‘’), (‘clang_version’, ‘3.3’)]

… Generating bindings for target spidermonkey

… … Processing section simple_test

/Users/zhouyoukai/tools/bindings-generator/generator.py:1416: YAMLLoadWarning: calling yaml.load() without Loader=… is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
data = yaml.load(stream)

Generating javascript bindings succeeds.

最后提示成功,但是在/Users/zhouyoukai/cocos/scripting/js-bindings下却没有js文件,/Users/zhouyoukai/tools/bindings-generator这下面也没有。
有谁能告诉我,这个绑定工具为什么这么难用

而且在新生成的hpp中像这类注册函数,void register_all_box2dclasses(JSContext* cx, JS::HandleObject obj);
跟引擎中自带的bool register_all_box2dclasses(se::Object* obj);还不一样,参数也不同,这是为什么

creator版本是1.10.2

这是由于不同的 jsb 版本导致的,

第一个是 jsb 1.0
第二个是 jsb 2.0

奇怪的就是这里
creator1.10.2里自带的cocos引擎,jsb cpp文件,里面是 se::Object
我再执行python genbindings.py。发现就变成jsb1.0了

我把cocos的目录拷贝到外面执行,好像有问题。
但是直接在cocos目录下执行,好像可以了。

当c++中含std::list<自定义对象>这种成员变量时,通过jsbinding导出hpp与cpp后,cpp编译会报错
Showing Recent Messages
/Users/zhouyoukai/Documents/workspace/game/cocos2d_cpp_demo/creatorProject/build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/auto/jsb_xxx_auto.cpp:402:15: No matching function for call to ‘native_ptr_to_seval’

编译出来的autocpp是这样的
static bool js_easy_match_EasyMatchRoomListResp_getRoomList(se::State& s)
{
EasyMatchRoomListResp* cobj = (EasyMatchRoomListResp*)s.nativeThisObject();
SE_PRECONDITION2(cobj, false, “js_easy_match_EasyMatchRoomListResp_getRoomList : Invalid Native Object”);
const auto& args = s.args();
size_t argc = args.size();
CC_UNUSED bool ok = true;
if (argc == 0) {
const std::list<RoomEntity *, std::allocator<RoomEntity *> >& result = cobj->getRoomList();
-----这一行会报错
ok &= native_ptr_to_seval<std::list<RoomEntity , std::allocator >&>((std::list<RoomEntity *, std::allocator<RoomEntity *> >&)result, &s.rval());
SE_PRECONDITION2(ok, false, “js_easy_match_EasyMatchRoomListResp_getRoomList : Error processing arguments”);
return true;
}
SE_REPORT_ERROR(“wrong number of arguments: %d, was expecting %d”, (int)argc, 0);
return false;
}
SE_BIND_FUNC(js_easy_match_EasyMatchRoomListResp_getRoomList)