6.7.2.2 Runtime Systems on Windows Target Machines

In order to locate all relevant files, the following directory structure should be used:

     myapp.exe
     sprt4-0-7.dll
     sp-4.0.7\
     +--- bin\
     |    +--- sprt.sav
     +--- library\
          +--- <files from %SP_PATH%\library>

If support for multiple SICStus instances is needed, the run-times named e.g. sprt4-0-7_instance_01_.dll need to be available as well, in the same place as sprt4-0-7.dll.

myapp.exe is typically created by a call to spld:

     % spld --main=user [...] -o ./myapp.exe

If the directory containing sprt4-0-7.dll contains a directory called sp-4.0.7, SICStus assumes that it is part of a runtime system as described in the picture below. The (extended) runtime library, sprt.sav (spre.sav), is then looked up in the directory (sp-4.0.7/bin), as in the picture. Furthermore, the initial library_directory/1 fact will be set to the same directory with sp-4.0.7/library appended.

The directory structure under library/ should look like in a regularly installed SICStus, including the platform-specific subdirectory (x86-win32-nt-4 in this case). If your application needs to use library(system) and library(random), your directory structure may look like:

     myapp.exe
     sprt4-0-7.dll
     sp-4.0.7\
     +--- bin\
     |    +--- sprt.sav
     +--- library\
          +--- random.po
          +--- system.po
          +--- x86-win32-nt-4 \
               +--- random.dll
               +--- system.dll

The sp* files can also be put somewhere else in order to be shared by several applications provided the sprt4-0-7.dll can be located by the DLL search.

Naming the files with version number enables applications using different SICStus versions to install the sp* files in the same directory.

When a runtime system is redistributed to third parties, only the following files may be included in the distribution. All filenames are relative to %SP_PATH%:

bin\sprt.sav
bin\spre.sav
bin\jasper.jar
bin\prologbeans.jar
bin\*.dll
bin\*.po
library\*.{tcl,po,pl,bas}
Except license.pl!
library\*\*.dll
library\*\*.{po,pl}

Send feedback on this subject.