============= Windows Notes ============= :Author: Stefan Eletzhofer :Date: 2012-10-17 Abstract ======== This chapter includes notes on building and developing on Microsoft Windows. Building and linking against DLLs ================================= To have the linker create a dll it is enough to tell the linker to do so in the makefile:: dll: link /subsystem:console -out:some.dll /debug:none /dll some.obj Unfortunately, the windows linker does not know how to link against a dll per default. The linker needs a '.lib' file to be able to link a dll. The linker command above would create three files: - some.dll - some.lib - some.exp To link against the dll, specify the 'some.lib' file:: test.exe: link /subsystem:console /out:test.exe test.obj some.lib Creating a lib file manually ---------------------------- The 'lib' tool needs in order to create the '.lib' file a '.def' file, which has to be manually created. The 'dumpbin' tool can help:: C:> dumpbin /exports some.dll Microsoft (R) COFF/PE Dumper Version 10.00.40219.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file some.dll File Type: DLL Section contains the following exports for nxfs.dll 00000000 characteristics 507E6F98 time date stamp Wed Oct 17 10:43:04 2012 0.00 version 1 ordinal base 2 number of functions 2 number of names ordinal hint RVA name 1 0 000026C0 some_func 2 1 00003B10 some_func_1 Summary 9000 .data 3000 .rdata 2000 .reloc 1E000 .text The 'def' file 'some.def' needs then to look like so:: EXPORTS some_func some_func_1 .. vim: set ft=rst tw=75 nocin nosi ai sw=4 ts=4 expandtab: