QuickJS注冊

注冊c函數(shù)

#include "quickjs.h"
JSRuntime*  rt = new JS_NewRuntime();
JSContext *ctx = new JS_NewContext(rt);

//1.實現(xiàn)c函數(shù)
static int sum(int a, int b)
{
  return a+b;
}

//2.實現(xiàn)JS的C函數(shù)
static JSValue js_sum(JSContext* ctx, JSValueConst this_val, int argc, JSValueConst* argv)
{
    int a, b, _sum;
    if (JS_ToInt32(ctx, &a, argv[0]))
        return JS_EXCEPTION;
    if (JS_ToInt32(ctx, &b, argv[1]))
        return JS_EXCEPTION;

    _sum = sum(a, b);

    return JS_NewInt32(ctx, _sum);
}

//3.獲取全局JS對象
JSValue globalObj = JS_GetGlobalObject(ctx);
//4. 為JS對象注冊名稱為sum的屬性,屬性值為函數(shù)
JS_SetPropertyStr(ctx, globalObj, "sum", JS_NewCFunction(ctx, js_sum, "sum", 2));
//5.JS_GetGlobalObject獲取的是全局對象的復制,所以需要釋放
JS_FreeValue(ctx, globalObj);
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容