<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>Hello,<BR>
&nbsp;<BR>
I would like to compile a C++ program that embeds MzScheme, similar to the example given in the online documentation (see example at end of email).&nbsp; I would like to be able to pass it<BR>
strings representing arbitrary Scheme programs, and have it evaluate them.<BR>
&nbsp;<BR>
I am running Microsoft's Visual C++ Express, on a Vista machine.&nbsp; <BR>
&nbsp;<BR>
Am I mistaken, or can I use mzc for this purpose?&nbsp; It seems as though mzc makes life easier by resolving linkage issues, etc. (e.g. to MzScheme libraries) but I'm not sure if this is only for <BR>
extension writing.&nbsp; I've managed to produce .obj files via mzc... but not an .exe.<BR>
&nbsp;<BR>
I have searched for examples but have found no good ones yet, so I apologize in advance if they have passed me by.<BR>
&nbsp;<BR>
Thank you,<BR>
Matthew P.<BR>
&nbsp;<BR>
<FONT size=1>#include "scheme.h"<BR><BR>int main(int argc, char *argv[])<BR>{<BR>&nbsp; Scheme_Env *e;<BR>&nbsp; Scheme_Object *curout;<BR>&nbsp; int i;<BR>&nbsp; mz_jmp_buf * volatile save, fresh;<BR><BR>&nbsp; scheme_set_stack_base(NULL, 1); /* required for OS X, only */<BR><BR>&nbsp; e = scheme_basic_env();<BR><BR>&nbsp; curout = scheme_get_param(scheme_current_config(), MZCONFIG_OUTPUT_PORT);<BR><BR>&nbsp; for (i = 1; i &lt; argc; i++) {<BR>&nbsp;&nbsp;&nbsp; save = scheme_current_thread-&gt;error_buf;<BR>&nbsp;&nbsp;&nbsp; scheme_current_thread-&gt;error_buf = &amp;fresh;<BR>&nbsp;&nbsp;&nbsp; if (scheme_setjmp(scheme_error_buf)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheme_current_thread-&gt;error_buf = save;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1; /* There was an error */<BR>&nbsp;&nbsp;&nbsp; } else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Scheme_Object *v = scheme_eval_string(argv[i], e);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheme_display(v, curout);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheme_display(scheme_make_character('\n'), curout);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* read-eval-print loop, implicitly uses the initial Scheme_Env: */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheme_apply(scheme_builtin_value("read-eval-print-loop"), 0, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheme_current_thread-&gt;error_buf = save;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; return 0;<BR>}<BR></FONT><BR></body>
</html>