X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fwin32-dlls.xml;h=703bb1877dd636a7ef49e8d03a351b06e314068f;hb=aedb94f5f220b5e442b23ecc445fd38c8d9b6ba0;hp=f52f189c693dd22d8b7538714ddba5c281267d58;hpb=ded67816a2baf995081d1772aa7d83c7e51a284b;p=ghc-hetmet.git diff --git a/docs/users_guide/win32-dlls.xml b/docs/users_guide/win32-dlls.xml index f52f189..703bb18 100644 --- a/docs/users_guide/win32-dlls.xml +++ b/docs/users_guide/win32-dlls.xml @@ -294,7 +294,7 @@ option on all the Haskell modules that make up your application. Creating a Win32 DLL -––mk-dll +–shared Sealing up your Haskell library inside a DLL is straightforward; compile up the object files that make up the library, and then build the DLL by issuing a command of the form: @@ -302,12 +302,12 @@ the DLL by issuing a command of the form: -ghc ––mk-dll -o foo.dll bar.o baz.o wibble.a -lfooble +ghc –shared -o foo.dll bar.o baz.o wibble.a -lfooble -By feeding the ghc compiler driver the option , it +By feeding the ghc compiler driver the option , it will build a DLL rather than produce an executable. The DLL will consist of all the object files and archives given on the command line. @@ -347,12 +347,12 @@ you compile into a DLL must have a common root. By default, the entry points of all the object files will be exported from -the DLL when using . Should you want to constrain +the DLL when using . Should you want to constrain this, you can specify the module definition file to use on the command line as follows: -ghc ––mk-dll -o .... -optdll––def -optdllMyDef.def +ghc –shared -o .... MyDef.def See Microsoft documentation for details, but a module definition file @@ -371,22 +371,22 @@ EXPORTS -In addition to creating a DLL, the option also +In addition to creating a DLL, the option also creates an import library. The import library name is derived from the name of the DLL, as follows: -DLL: HScool.dll ==> import lib: libHScool_imp.a +DLL: HScool.dll ==> import lib: libHScool.dll.a The naming scheme may look a bit weird, but it has the purpose of allowing the co-existence of import libraries with ordinary static libraries (e.g., libHSfoo.a and -libHSfoo_imp.a. +libHSfoo.dll.a. Additionally, when the compiler driver is linking in non-static mode, it will rewrite occurrence of on the command line to -. By doing this for you, switching from +. By doing this for you, switching from non-static to static linking is simply a question of adding to your command line. @@ -447,7 +447,7 @@ RTS-––a possible implementation is: #include <windows.h> #include <Rts.h> -extern void__stginit_Adder(void); +extern void __stginit_Adder(void); static char* args[] = { "ghcDll", NULL }; /* N.B. argv arrays must end with NULL */ @@ -485,7 +485,7 @@ ghc -c dllMain.c Construct the DLL: -ghc ––mk-dll -o adder.dll adder.o adder_stub.o dllMain.o +ghc –shared -o adder.dll adder.o adder_stub.o dllMain.o