Interne ondersteuningsinformatie van Microsoft
BUG #: 101959 (Visual Studio)
Samenvatting
Wanneer u een DLL-bestand maken met behulp van de 64-bits versie van Microsoft Visual C++ Compiler en Linker, foutbericht Linker foutnummer LNK4197 als een functie voor het exporteren van meer dan één keer is gedeclareerd.
Symptomen
De uitvoer van de Linker kan worden met de volgende strekking:
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
Oorzaak
De Linker foutnummer LNK4197 wordt gegenereerd wanneer een functie voor het exporteren van meer dan één keer is gedeclareerd. Een functie wordt gedeclareerd voor uitvoer in een van de volgende manieren:
-
De functie wordt gedeclareerd met het sleutelwoord __declspec(dllexport) in het bronbestand C:
__declspec(dllexport) int DllSample() { return 42;}
-
De functie wordt gedeclareerd met behulp van de definitie van een module (. DEF)-bestand:
EXPORTS DllSample
Deze Linker-fout treedt meestal wanneer beide trefwoorden van de __declspec(dllexport) en een. DEF-bestand worden gebruikt voor het definiëren van dezelfde functienaam in een. DLL-project.
Oplossing
U lost dit probleem, definiëren geëxporteerde functies slechts één keer met het sleutelwoord __declspec(dllexport) of met behulp van een. DEF-bestand. Beide methoden niet gebruiken.
Status
Dit gedrag is inherent aan het ontwerp van het product.
Meer informatie
Het declareren van een functie voor meer dan één keer uitvoer produceert de Linker-fout die wordt beschreven in de sectie 'Symptomen' van dit artikel in de 32-bits versies van Microsoft Windows C++ Compiler en Linker niet. Microsoft raadt echter aan dat uitvoer van de functie slechts één keer te in zowel 32-bits en 64-bits versies van de Windows C++ Compiler en de Linker definiëren.