Microsoft KB Archive/835326

= You receive an LNK4197 error in the 64-bit version of the Visual C++ Compiler =

Article ID: 835326

Article Last Modified on 3/1/2004

-

APPLIES TO


 * Microsoft Windows Server 2003 Driver Development Kit
 * Microsoft Windows Server 2003, Enterprise x64 Edition
 * Microsoft Windows Server 2003, Datacenter x64 Edition

-





SUMMARY
When you build a DLL by using the 64-bit version of the Microsoft Visual C++ Compiler and Linker, you may receive Linker error number LNK4197 if a function has been declared for export more than one time.



SYMPTOMS
The Linker output may be similar to the following: C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll Sample.obj Sample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification Creating library Sample.lib and object Sample.exp



CAUSE
The Linker error number LNK4197 is generated when a function has been declared for export more than one time. A function is declared for export in one of the following ways:   The function is declared by using the __declspec(dllexport) keyword in your C source file: __declspec(dllexport) int DllSample {  return 42; }   The function is declared by using a module-definition (.DEF) file: EXPORTS DllSample 

This Linker error may occur most frequently when both the __declspec(dllexport) keyword and a .DEF file are used to define the same function name in a .DLL project.



RESOLUTION
To resolve this behavior, define exported functions only one time, either by using the __declspec(dllexport) keyword or by using a .DEF file. Do not use both of these methods.



STATUS
This behavior is by design.



MORE INFORMATION
Declaring a function for export more than one time may not produce the Linker error that is described in the &quot;Symptoms&quot; section of this article in 32-bit versions of the Microsoft Windows C++ Compiler and Linker. However, Microsoft recommends that you define function exports only one time in both 32-bit and 64-bit versions of the Windows C++ Compiler and Linker.

Keywords: kbddk kbprb KB835326

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.