QuickJS注册

注册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);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容