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中
var haha = testjs("js run hahhahaha");if (haha) else
var testfunction = function (var1)
c++中
宣告函式
jsbool testjs(jscontext *cx, uint32_t argc, jsval *vp)}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);
cclog(pw.get().c_str());
lua與C 相互呼叫
新建乙個工程,將編譯出來的lua.lib包含進來,就可以開始用了 1 c 呼叫 lua 編寫 如下 include using namespace std pragma comment lib,lua.lib extern c void main int nret lual loadfile l,l...
C與C 之間相互呼叫
c與c 之間相互呼叫 1 匯出c函式以用於c或c 的專案 如果使用c語言編寫的dll,希望從中匯出函式給c或c 的模組訪問,則應使用 cplusplus 預處理器巨集確定正在編譯的語言。如果是從c 語言模組使用,則用c鏈結宣告這些函式。如果使用此技術並為dll提供標頭檔案,則這些函式可以原封不動地由...
C與C 之間相互呼叫
1 匯出c函式以用於c或c 的專案 如果使用c語言編寫的dll,希望從中匯出函式給c或c 的模組訪問,則應使用 cplusplus 預處理器巨集確定正在編譯的語言。如果是從c 語言模組使用,則用c鏈結宣告這些函式。如果使用此技術並為dll提供標頭檔案,則這些函式可以原封不動地由c和c 模組使用。以下...