Страница 1 из 1

JavaScript движки

Добавлено: Пт, 29 апреля 2016, 15:01:51
dyvniy
http://duktape.org/
Спойлер
Add to build

(See Getting started for a more detailed introduction.)

Add Duktape C source and header to your build. Any build system can be used. The distributable contains an example Makefile for reference. In the simplest case:

$ gcc -std=c99 -o test test.c duktape.c -lm
$ ./test
Hello world!
2 Initialize a context

Initialize and use Duktape somewhere in your program:

/* 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 Add C function bindings

To call a C function from Ecmascript code, first declare your C function:

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 */
}
Register your function e.g. into the global object:

duk_push_c_function(ctx, adder, DUK_VARARGS);
duk_put_global_string(ctx, "adder");
You can then call your function from Ecmascript code:

duk_eval_string_noresult(ctx, "print('2+3=' + adder(2, 3));