ILink32 Help TLINK32 and ILINK32 are the command-line tools that combine object modules (.OBJ files), library modules (.LIB files), and resources to produce executable files (.EXE and .DLL files). Because the compiler automatically calls a linker, you don't need to explicitly use a linker unless you suppress the linking stage of compiling (see the -c compiler option). TLINK32 and ILINK32 are invoked from the command line to link a configuration file called TLINK32.CFG (ILINK32 uses ILINK32.CFG), an optional response file, and command-line options to link object modules, libraries, and resources into an executable file. Both TLINK32 and ILINK32 link 32-bit Windows code and use the 32-bit resource linker, RLINK32.DLL. ILINK32 behaves just like TLINK32-it links object modules (.OBJ files), library modules (.LIB files), and resources to produce executable files (.EXE and .DLL files). The difference is that ILINK32 uses linker-state files to link previously linked images, resulting in much faster link cycles. Differences between ILINK32 and TLINK32 Although both ILINK32 and TLINK32 link 32-bit executables, there are some differences between the two. Linker-state files When you first build a project, ILINK32 creates and stores project .OBJ and .LIB information in four read-only linker-state files. The next time you build or make your project, ILINK32 reads these files to reduce the time it takes to link your project. The four linker-state files have file names of .IL?, where is taken from the name of the project .MAK file, and the character in place of the question mark (?) identifies each of the four individual linker-state files. By default, C++Builder automatically creates an initial set of linker-state files the first time you load it, and stores the files in your C++Builder Bin directory. If you need to regenerate the default linker-state files, pass the command-line option -deflink to C++Builder; C++Builder will then create the files when you load it. Debug-information file If you include debug information in your final linked executable, ILINK32 will always store the debug information in a separate .TDS file, named .TDS by default. Both the C++Builder integrated debugger and Turbo Debugger read these debugger-information files. Linker switches While ILINK32 does support most switches that TLINK32 supports, ILINK32 does not support the following linker switches: /Enn Maximum errors /Gx Goodie switches /n Disables default libraries /o Import by ordinals /P Code packing /r Verbose line ILINK32 does support these non-TLINK32 switches: /C Erase all linker-state files before each link /t Display time spent on link The linker syntax controls how the linkers work. Linker command-line options are case-sensitive. Unless specified, instructions and options for TLINK32 also apply to ILINK32. The linkers can also use a configuration file called TLINK32.CFG for options that you'd normally type at the command-line. Syntax TLINK32 | ILINK32 [@respfile][options] startup myobjs, [exe], [mapfile], [libraries], [deffile], [resfile] [@respfile] A response file is an ASCII file that lists linker options and file names that you would normally type at the command line. By placing options and files names in a response file, you can save the amount of keystrokes you need to type to link your application. [options] Linker options that control how the linker works. For example, options specify whether to produce an .EXE or a DLL file. Linker options must be preceded by either a slash (/) or a hyphen (-). startup A Borland initialization module for executables or DLLs that arranges the order of the various segments of the program. Failure to link in the correct initialization module usually results in a long list of error messages telling you that certain identifiers are unresolved, or that no stack has been created. myobjs The .OBJ files you want linked. Specify the path if the files aren't in the current directory. (The linker appends an .OBJ extensions if no extension is present.) [exe] The name you want given to the executable file (.COM, .EXE, or .DLL). If you don't specify an executable file name, TLINK derives the name of the executable by appending .EXE or .DLL to the first object file name listed. (The linker assumes or appends an .EXE extensions for executable files if no extension is present. It also assumes or appends a .DLL extension for dynamic link libraries if no extension is present.) [mapfile] Is the name you want given to the map file. If you don't specify a name, the map file name is given the same as exefile (but with the .MAP extension). (The linker appends a .MAP extensions if no extension is present.) [libraries] The library files you want included at link time. Do not use commas to separate the libraries listed. If a file is not in the current directory or the search path (see the /L option) then you must include the path in the link statement. (The linker appends a .LIB extension if no extension is present.) The order in which you list the libraries is very important; be sure to use the order defined in this list: Code Guard libraries (if needed) List any of your own user libraries, noting that if a function is defined more than once, the linker uses the first definition encountered If you're creating a DOS overlay, link the DOS overlay module OVERLAY.LIB DPMI libraries (DOS DPMI applications only) IMPORT.LIB (if you're creating an executable that uses the Windows API) Math libraries (if needed) Runtime libraries associated with your memory model and platform [deffile] The module definition file for a Windows executable. If you don't specify a module definition (.DEF) file and you have used the /Twe or /Twd option, the linker creates an application based on default settings. (The linker appends a .DEF extension if no extension is present.) [resfile] A list of .RES files (compiled resource files) to bind to the executable. (The linker appends an .RES extension if no extension is present.) Copyright 1998 Borland International.