FIX: LINK May Incorrectly Generate L2049 for Resource-Only DLLLast reviewed: September 11, 1997Article ID: Q73663 |
5.03 5.05 5.10 5.11 | 5.03 5.05 5.10 5.11
MS-DOS | OS/2kbtool kberrmsg kbbuglist kbfixlist The information in this article applies to:
SYMPTOMSThe Microsoft LINK utility versions 5.03, 5.05, 5.1, and 5.11 will generate the following error if you attempt to link a resource-only DLL that contains no code or data:
LINK: error L2049: no segments definedAlthough a valid DLL is created in this case, these versions of LINK set the error bit in the DLL's header and return an error code to the calling program.
RESOLUTIONBeginning with LINK version 5.13, the L2049 error was converted to a warning and the error bit is no longer set in the output file. To work around the problem with LINK 5.03, 5.05, 5.1, or 5.11, the EXEHDR utility may be used to reset the error bit in the header.
STATUSMicrosoft has confirmed this to be a problem in LINK versions 5.03, 5.05, 5.1, and 5.11. This problem was corrected in LINK version 5.13.
MORE INFORMATIONA resource-only DLL does not contain code or data--it is only used to store bitmaps, menus, fonts, and other static resources, but LINK versions 5.03, 5.05, 5.1, and 5.11 flag the lack of segments with an L2049 error and mark the output file as invalid. To use the DLL, you can use EXEHDR to turn off the error bit by invoking it with the /RESET option. For example:
EXEHDR /RESET RESOURCE.DLLThe most efficient method is to add this statement to the description block in your makefile that contains the LINK command. For example:
test.dll: test.obj test.def link test,test.dll,,,test.def; exehdr /reset test.dllNote that in order to stop NMAKE from terminating with the error code from LINK, you should use either the /I (ignore exit codes) switch when invoking NMAKE, specify the .IGNORE directive inside the makefile, or add a dash (-) before the LINK command to indicate that processing the makefile should continue even if there is an error with the link step. See your NMAKE documentation for further information about the /I option, the .IGNORE directive, and the dash operator.
|
Additional reference words: 5.10
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |