Microsoft Internal Support Information
BUG #: 101959 (Visual Studio)
Súhrn
Pri vytváraní knižnice DLL v 64-bitovej verzii programu Microsoft Visual C++ kompilátor a Linker, dostanete Linker chyby číslo LNK4197 Ak funkcie pre export viac ako raz.
Príznaky
Linker výstupu možno podobný nasledujúcemu:
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
Príčina
Linker číslo chyby LNK4197 vzniká, ak funkcia je prihlásené na export viac ako raz. Funkcia za vývoz jedným z nasledujúcich spôsobov:
-
Funkcia za pomocou kľúčových slov __declspec(dllexport) C zdrojového súboru:
__declspec(dllexport) int DllSample() { return 42;}
-
Funkcia za pomocou modulu rozlíšením (. Súbor definition):
EXPORTS DllSample
Táto chyba Linker najčastejšie dochádza pri __declspec(dllexport) slovo a. Definition súbor používa definovať rovnakým názvom funkcie. DLL projektu.
Riešenie
Tento problém vyriešite definovať funkciách iba raz pomocou __declspec(dllexport) kľúčových slov alebo pomocou. Definition súbor. Nepoužívajte obidve nasledujúce metódy.
Stav
Toto správanie je zámerné.
Ďalšie informácie
Vyhlásenie funkciu exportu viackrát nemusí vyvolať Linker chyby, ktorý je popísaný v časti "Príznaky" tohto článku 32-bitové verzie systému Microsoft Windows C++ kompilátor a Linker. Spoločnosť Microsoft však odporúča definovať funkciu vývoz len raz, v 32-bitové a 64-bitové verzie systému Windows C++ kompilátor a Linker.