[plt-scheme] collection not found: "scheme" in embedding mzscheme with v4.x
At Thu, 31 Jul 2008 19:16:33 +0800, "Zhang Chiyuan" wrote:
> I noticed recently that mzscheme upgraded to a new version. I upgraded
> it and found my program broken. I read the Inside PLT scheme and found
> that now I need to do scheme_namespace_require so I added the line to
> require "scheme/base" but I got an error:
>
> scheme/base: standard-module-name-resolver: collection not found:
> "scheme" in any of: () in: scheme/base
> Seg fault (internal error) at 0x4
>
> I copied the example code in "Inside PLT scheme" and tried, still the
> same problem. Here's the code I use:
>
> <-----------------------------------------------------------------
> #include "scheme.h"
>
> [...]
>
> MZ_GC_REG();
>
>
> v = scheme_intern_symbol("scheme/base");
> scheme_namespace_require(v);
In the manual, there's a `declare_modules(e);' line before the call to
scheme_namespace_require(). The declare_modules() function is defined
by the `#include "base.c"' line, where "base.c" is created by
mzc --c-mods base.c ++lib scheme/base
See also the 4th bullet in section 1.3.1. In general, you need to
either
* create embedded module declarations using `mzc --c-mods', or
* set a path to the "collects" directory using
scheme_init_collection_paths() and scheme_set_collects_path().
Matthew