[plt-scheme] Embedding MzScheme on Mac OS X
Hi All,
I need help figuring out the correct compiler switched for embedding
mzscheme in
a C application on Mac OS 10.5.
I succeeded in compiling the example code in
http://docs.plt-scheme.org/inside/overview.html#(part._embedding)
but running the result was disappointing.
Hopefully I have missed something obvious - but what?
The mysterios ./pltcur is a symbolic link to /Applications/PLT\ Scheme\
Full\ v4.2.0.2/ .
jasmacair:mzc-experiment jensaxelsoegaard$ /Applications/PLT\ Scheme\ Full\
v4.2.0.2/bin/mzc --c-mods modules.c ++lib scheme/base
jas: mzc-experiment jensaxelsoegaard$ gcc -L./pltcur/lib/
-I./pltcur/include/ -F./pltcur/lib/ -framework PLT_MzScheme -lmzscheme
-lmzgc embedded.c
jas: mzc-experiment jensaxelsoegaard$ export
DYLD_FRAMEWORK_PATH=/Applications/PLT\ Scheme\ Full\ v4.2.0.2/lib/
jas: mzc-experiment jensaxelsoegaard$ ./a.out "1"
Seg fault (internal error) at 0x87
Bus error
jas: mzc-experiment jensaxelsoegaard$ ./a.out 1
Seg fault (internal error) at 0x87
Bus error
jas: mzc-experiment jensaxelsoegaard$ cat embedded.c
#include "scheme.h"
#include "modules.c"
static int run(Scheme_Env *e, int argc, char *argv[])
{
Scheme_Object *curout;
int i;
mz_jmp_buf * volatile save, fresh;
/* Declare embedded modules in "modules.c": */
declare_modules(e);
scheme_namespace_require(scheme_intern_symbol("scheme/base"));
curout = scheme_get_param(scheme_current_config(),
MZCONFIG_OUTPUT_PORT);
for (i = 1; i < argc; i++) {
save = scheme_current_thread->error_buf;
scheme_current_thread->error_buf = &fresh;
if (scheme_setjmp(scheme_error_buf)) {
scheme_current_thread->error_buf = save;
return -1; /* There was an error */
} else {
Scheme_Object *v, *a[2];
v = scheme_eval_string(argv[i], e);
scheme_display(v, curout);
scheme_display(scheme_make_char('\n'), curout);
/* read-eval-print loop, uses initial Scheme_Env: */
a[0] = scheme_intern_symbol("scheme/base");
a[1] = scheme_intern_symbol("read-eval-print-loop");
scheme_apply(scheme_dynamic_require(2, a), 0, NULL);
scheme_current_thread->error_buf = save;
}
}
return 0;
}
int main(int argc, char *argv[])
{
return scheme_main_setup(1, run, argc, argv);
}
--
Jens Axel Søgaard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20090712/03213a59/attachment.html>