#1 dyvniy » Пт, 29 апреля 2016, 15:01:51
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));
