美文网首页
QuickJS注册

QuickJS注册

作者: NullUser | 来源:发表于2023-12-21 10:46 被阅读0次

    注册c函数

    #include "quickjs.h"
    JSRuntime*  rt = new JS_NewRuntime();
    JSContext *ctx = new JS_NewContext(rt);
    
    //1.实现c函数
    static int sum(int a, int b)
    {
      return a+b;
    }
    
    //2.实现JS的C函数
    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的属性,属性值为函数
    JS_SetPropertyStr(ctx, globalObj, "sum", JS_NewCFunction(ctx, js_sum, "sum", 2));
    //5.JS_GetGlobalObject获取的是全局对象的复制,所以需要释放
    JS_FreeValue(ctx, globalObj);
    

    相关文章

      网友评论

          本文标题:QuickJS注册

          本文链接:https://www.haomeiwen.com/subject/iunxndtx.html