Necesitaba ampliar mi aplicación C con un lenguaje de secuencias de comandos, así que probé MuJS, está escrito en C simple, pero carece de documentación sobre detalles. Escarbando a través del código no pude averiguar cómo hacer esta tarea básica de crear un objeto simple con una función dentro de él.
Resultado Esperado:
myobject: { myfn: function () {} }Intenté esto pero resultó en una "excepción no detectada".
js_newobject(J); { js_newcfunction(J, myfn, "myfn", 2); js_setproperty(J, -2, "myfn"); } js_setglobal(J, "myobject");Probablemente esté haciendo algo más mal, porque el código que escribió debería funcionar como se esperaba.
Aquí hay un ejemplo completo con su código que compila y se ejecuta sin errores:
#include <stdio.h> #include "mujs.h" void myfn(js_State *J) { printf("Hello, world!\n"); } int main(int argc, char **argv) { js_State *J = js_newstate(NULL, NULL, 0); js_newobject(J); js_newcfunction(J, myfn, "myfn", 0); js_setproperty(J, -2, "myfn"); js_setglobal(J, "myobject"); js_dostring(J, "myobject.myfn()"); js_freestate(J); }