Example of evaluating #lang from C with Racket BC - racket/racket GitHub Wiki
Example of evaluating #lang ….
from C with Racket BC
#include "scheme.h"
#include "base.c"
/*
To gather all the modules needed by `racket/base` in "base.c":
raco ctool --c-mods base.c ++lib racket/base ++lib racket/base/lang/reader ++lib racket/runtime-config
Compilation and linking of this file is something like
gcc -DMZ_PRECISE_GC -I path/to/racket/include main.c path/to/libracket3m.a
but the details depend on the platform.
*/
static int run(Scheme_Env *e, int argc, char *argv[]) {
MZ_GC_DECL_REG(1);
MZ_GC_VAR_IN_REG(0, e);
MZ_GC_REG();
declare_modules(e);
scheme_namespace_require(scheme_intern_symbol("racket/base"));
scheme_eval_string("(read-accept-reader #t)", e);
scheme_eval_string("(current-module-declare-name"
" (make-resolved-module-path 'something))", e);
scheme_eval_string("#lang racket/base 'ok", e);
scheme_eval_string("(dynamic-require ''something #f)", e);
MZ_GC_UNREG();
return 0;
}
int main(int argc, char *argv[]) {
return scheme_main_setup(1, run, argc, argv);
}