[plt-scheme] question about creating an executable under Windowsusing Allegro

From: Jon Rafkind (workmin at ccs.neu.edu)
Date: Sun May 6 13:48:47 EDT 2007

Jon Rafkind wrote:
> Anyway the main problem is the libaries exist in a non-official place, 
> namely $package/lib and $package/allegro-4.2.0 as opposed to 
> $package/compiled/native. Once I made this directory and moved the 
> libraries there mzc was able to handle it fine. This requires a few 
> changes to the Allegro package as well which I am testing now. I'll 
> release a new version of the package as soon as its working.
I wasn't totally right about that but I did move the internal libraries 
around and now its possible to make a stand-alone directory with 
everything you need to run a program that uses Allegro. I couldn't 
upload the package to planet so you can download the new package here:
http://www.rafkind.com/jon/allegro-scheme/packages/2/2/allegro.plt

Install it with $ planet -f allegro.plt kazzmir 2 2

To build a stand-alone executable on windows run these commands

$ mzc --exe mygame mygame.ss

$ mzc --exe-dir mydir ++collects-copy c:/Documents and 
Settings/kazzmir/Application Data/PLT 
Scheme/planet/300/360/cache/kazzmir/allegro.plt/2/2/native 
--collects-path native mygame.exe

And just replace the paths and names( mydir, mygame ) with your own.

This solution probably breaks something else along the way but I don't 
know a proper way to load native libraries. When you run program 
normally with mzscheme or drscheme the native libraries are loaded from 
the current load directory + "../native/alleg.so" but inside a 
distribution made with --exe-dir the collects will be copied to 
$dir/lib/plt/mygame/collects/native and there doesn't seem to be a way 
to get $dir/lib/plt/mygame/collects/ dynamically. So adding 
'--collects-path native' solves this problem by putting the 'native' 
directory in $dir/native instead. If you need to use other collects this 
might break though..


Posted on the users mailing list.