Chybová LNK4197 v 64bitové verze kompilátoru Visual C++

Shrnutí

Při pomocí 64bitové verze kompilátoru Microsoft Visual C++ a propojovací program sestavení knihovny DLL, propojovací program číslo chyby LNK4197 můžete obdržet, pokud byla deklarována funkce pro export více než jednou.

Příznaky

Výstupní propojovací program může být podobná následující:

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 

Příčina

Číslo chyby LNK4197 propojovací program vygeneruje, když byla deklarována funkce pro export více než jednou. Funkce je deklarována pro export v jednom z následujících způsobů:

  • Funkce je deklarována pomocí klíčového slova __declspec(dllexport) C zdrojový soubor:

    __declspec(dllexport) int DllSample() {   return 42;}
  • Funkce je deklarována pomocí definice modulu (. Soubor DEF):

    EXPORTS   DllSample

Propojovací program chybu dochází nejčastěji při obou klíčové slovo __declspec(dllexport) a. Slouží k definování názvu funkce v souboru .def. Projekt knihovny DLL.

Řešení

Chcete-li tento problém vyřešit, definovat exportovaných funkcí pouze jednou, pomocí klíčového slova __declspec(dllexport) nebo pomocí. DEF souboru. Nepoužívejte obě tyto metody.

Stav

Toto chování je záměrné.

Další informace

Deklarování funkce pro export více než jednou, nemusí poskytovat Linker chyba, která je popsána v části "Příznaky" tohoto článku v 32bitové verze systému Microsoft Windows C++ kompilátoru a propojovacího programu. Společnost Microsoft však doporučuje definovat funkci vývoz pouze jednou v 32bitových a 64bitových verzích systému Windows C++ kompilátoru a propojovacího programu.

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Děkujeme za váš názor!

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×