Duktape 的 C 語言源文件和頭文件可用於任何構建系統,只需將它們加入到你的項目中參與構建即可。 ...
譯文作者:Atypiape
原文來自:Duktape
寫作日期:2016-08-13
1 參與構建
(可以通過查看入門指南,來瞭解更詳細的介紹)
Duktape 的 C 語言源文件和頭文件可用於任何構建系統,只需將它們加入到你的項目中參與構建即可。可發行版本中包含一個 Makefile 示例以供參考。以下是個最簡單的例子:
$ gcc -std=c99 -o test test.c duktape.c -lm
$ ./test
Hello world!
2 初始化一個環境(context)
在你程式的任何地方初始化並使用 Duktape:
/* test.c */
#include "duktape.h"
int main(int argc, char *argv[]) {
duk_context *ctx = duk_create_heap_default();
duk_eval_string(ctx, "print('Hello world!');");
duk_destroy_heap(ctx);
return 0;
}
3 添加 C 函數綁定
想由 ECMAScript 代碼來調用一個 C 函數,首先需要定義你的 C 函數:
duk_ret_t adder(duk_context *ctx) {
int i;
int n = duk_get_top(ctx); /* #args */
double res = 0.0;
for (i = 0; i < n; i++) {
res += duk_to_number(ctx, i);
}
duk_push_number(ctx, res);
return 1; /* one return value */
}
接下來,註冊你這個函數,比例將它註冊到全局對象中:
duk_push_c_function(ctx, adder, DUK_VARARGS);
duk_put_global_string(ctx, "adder");
然後,你就可以在 ECMAScript 代碼中調用你的函數了:
duk_eval_string_noresult(ctx, "print('2+3=' + adder(2, 3));");