Intern Microsoft-supportinformation
PROGRAMFEL #: 101959 (Visual Studio)
Sammanfattning
När du skapar en DLL-fil med hjälp av 64-bitarsversionen av Microsoft Visual C++-kompileraren och Linker hända Linker felnummer LNK4197 om en funktion som har deklarerats för export mer än en gång.
Symptom
Linker-utdata kan likna följande:
C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification Creating library Sample.lib and object Sample.exp
Orsak
Linker felnummer LNK4197 genereras när en funktion som har deklarerats för export mer än en gång. En funktion har deklarerats för export i något av följande sätt:
-
Funktionen har deklarerats med nyckelordet __declspec(dllexport) i källfilen C:
__declspec(dllexport) int DllSample() { return 42;}
-
Funktionen deklareras med en modul definition (. DEF) fil:
EXPORTS DllSample
Detta Linker-fel kan uppstå oftast när både nyckelordet __declspec(dllexport) och en. DEF-fil används för att definiera samma funktionsnamn i en. DLL-projekt.
Lösning
Lös problemet definierar exporterade funktioner bara en gång med hjälp av nyckelordet __declspec(dllexport) eller genom att använda en. DEF-fil. Använd inte båda dessa metoder.
Status
Detta är avsiktligt.
Mer information
Deklarera en funktion för export av mer än en gång kan du inte ge Linker-fel som beskrivs i avsnittet ”Symptom” i denna artikel i 32-bitars versioner av Microsoft Windows C++ Compiler och Linker. Microsoft rekommenderar emellertid att du definierar funktionen export endast en gång i både 32-bitars och 64-bitars versioner av Windows C++ Compiler och Linker.