Chapter 10. Building and using Win32 DLLs

Table of Contents
10.1. Linking with DLLs
10.2. Not linking with DLLs
10.3. Creating a DLL

On Win32 platforms, the compiler is capable of both producing and using dynamic link libraries (DLLs) containing ghc-compiled code. This section shows you how to make use of this facility.

10.1. Linking with DLLs

The default on Win32 platforms is to link applications in such a way that the executables will use the Prelude and system libraries DLLs, rather than contain (large chunks of) them. This is transparent at the command-line, so

sh$ cat main.hs
module Main where
main = putStrLn "hello, world!"
sh$ ghc -o main main.hs
ghc: module version changed to 1; reason: no old .hi file
sh$ strip main.exe
sh$ ls -l main.exe
-rwxr-xr-x   1 544      everyone     6144 May  3 17:11 main.exe*
sh$ ./main
hello, world!

will give you a binary as before, but the main.exe generated will use the Prelude and RTS DLLs instead.

6K for a "hello, world" application - not bad, huh? :-)