关于jsb中js与c++的相互调用
2013-08-14 19:32
423 查看
1.js调用c++函数
在c++中声明函数,名为functionCpp,通过spidermonkey中jsapi
的JS_DefineFunction绑定一个js函数,名为functionJS,此函数名
可在js中直接调用,并可以传参,参数由functionCpp接收。
2.c++调用js函数
在js中声明函数,名为functionJS,通过spidermonkey中jsapi的
JS_CallFunctoionName(也可用JS_CallFunction,但参数不一样),
c++调用该函数,并传入参数,参数由functionJS接收。
以上两种方法皆可接收返回值。
示例代码:
js中
c++中
声明函数
调用:
本博客内容均为原创,转载请注明:http://blog.csdn.net/balitaimonk/article/details/9970147
在c++中声明函数,名为functionCpp,通过spidermonkey中jsapi
的JS_DefineFunction绑定一个js函数,名为functionJS,此函数名
可在js中直接调用,并可以传参,参数由functionCpp接收。
2.c++调用js函数
在js中声明函数,名为functionJS,通过spidermonkey中jsapi的
JS_CallFunctoionName(也可用JS_CallFunction,但参数不一样),
c++调用该函数,并传入参数,参数由functionJS接收。
以上两种方法皆可接收返回值。
示例代码:
js中
var haha = testjs("js run hahhahaha"); if (haha) { cc.log("return from c++ :true"); } else { cc.log("false"); } var testfunction = function (var1) { cc.log(var1); var testhaha = "return from js"; return testhaha; }
c++中
声明函数
JSBool testjs(JSContext *cx, uint32_t argc, jsval *vp) { if (argc > 0) { JSString *string = NULL; JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "S", &string); if (string) { JSStringWrapper wrapper(string); //这块就有值了 CCLog(wrapper.get().c_str()); } } CCLog("js function"); return JS_TRUE; }
调用:
CCScriptEngineProtocol *pEngine = ScriptingCore::getInstance(); CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine); ScriptingCore::getInstance()->runScript("hello.js"); JSContext *cx = sc->getGlobalContext(); JSObject *obj = sc->getGlobalObject(); JS_DefineFunction(cx, obj, "testjs", testjs, 2, JSPROP_READONLY | JSPROP_PERMANENT); jsval var1 = c_string_to_jsval(cx, "hahhahah"); jsval rval; JS_CallFunctionName(cx, obj, "testfunction", 1, &var1, &rval); JSString* pS = JS_ValueToString(ScriptingCore::getInstance()->getGlobalContext(), rval); JSStringWrapper pW(pS); CCLog(pW.get().c_str());
本博客内容均为原创,转载请注明:http://blog.csdn.net/balitaimonk/article/details/9970147
相关文章推荐
- 关于jsb中js与c++的相互调用
- CEF的js与c++相互调用
- 关于WinRT中c++和c#相互调用的问题
- 关于WinRT中c++和c#相互调用的问题
- 关于WebView的使用js和java的相互调用(包含按返回按钮时,返回上一页而不是推出activity)
- Google V8之js与c++相互调用
- iOS - 关于OC和JS的相互调用
- duilib JS与C++的相互调用
- qwebengineview与js相互调用(js调用c++部分)
- 关于WinRT中c++和c#相互调用的问题
- c++调用js 获取值, VARIANT与CString相互转换
- 关于Flash和JS相互调用的例子
- 关于WinRT中c++和c#相互调用的问题
- gwt中java与js的相互调用
- Cocos2d-js 3.0 jsb环境调用底层Objective-C代码
- iOS js oc相互调用(JavaScriptCore)
- 浅谈js中子页面父页面方法 变量相互调用
- C++学习小记(C、C++函数之间相互调用)
- 关于c/c++程序在cmd中调用的事情
- WebView的使用总结-js与java之前的相互调用