The information in this article applies to:
SYMPTOMSThe Linker erroneously places the decorated name of a function in the resident name table of a DLL if either of the following is true:
-or-
RESOLUTIONThe best way to control whether symbols appear in the resident name table or the nonresident name table of a target is to ensure that user defined functions are exported by ordinal. By using the RESIDENTNAME keyword, you can ensure that decorated symbols are placed automatically in the resident name table. By omitting the RESIDENTNAME keyword, you can ensure that decorated symbols are placed automatically in the nonresident name table. Use of the __export keyword does not contribute to placement of the symbols in the target image at all. STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available. MORE INFORMATION
We can easily demonstrate the linker's behavior in all cases in the
following way:
void __export DllFunc1(void);And the .DEF file for the project contains the following EXPORTS section: EXPORTSNOTE: If controlling placement of symbols in the resident and nonresident name tables is an issue, export the functions using the methods shown for _DllFunc1 and _DllFunc2. This is the recommended approach. Additional query words: 5.50 5.60 5.60.220 non-resident names
Keywords : kb16bitonly LinkIss |
Last Reviewed: February 2, 2000 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |