On Sun, Jun 10, 2012 at 8:32 PM, Antonio Bonifati <email@example.com>
All works, but I have noticed that along with the .EXE file I have to distribute ucd.dat, ecl.dll and sockets.fas (the latter because my program uses sockets through usocket) and they have to be in the same directory, otherwise the executable won't find them and doesn't run. Is there a way to make a real stand-alone .EXE file?
You have found _different_ problems. One is that sockets.fas is not linked in your program because you probably use (REQUIRE :sockets). Why not list it as a dependency on your ASDF file?
The other one is the DLL issue, which arises because (as some other people asked here in the mailing list) ECL does not have support for building statically linked executables in Windows. It is not impossible: the code is in the core, but the Makefile has not been adapted.
I do not mind how big it is. Alternatively, how can I tell Lisp to load all dependency files from another directory than the one the .exe file is found? (e.g. a subdir)
Change the system directory using setenv("ECLDIR","whatever/path/you/want") before calling cl_boot().
BTW where is the documentation for the socket library that comes with ECL? I would rather use that directly rather than usocket, because the latter seems to be unstable. My server often hangs and I get no error message! This happens both in Linux and in Windows, but more often in Windows.