Sdílet prostřednictvím


Chyba linkerů LNK2038

zjistila se neshoda u názvu: hodnota value_1 neodpovídá hodnotě value_2 v souboru.obj.

Linker zjistil neshodu symbolů. Tato chyba značí, že různé části aplikace, včetně knihoven nebo jiného objektového kódu, na které aplikace odkazuje, používají konfliktní definice symbolu. Direktiva direktivy detektiva neshody slouží k definování takových symbolů a detekci jejich konfliktních hodnot.

Možné příčiny a řešení

K této chybě může dojít, když je soubor objektu v projektu zastaralý. Než vyzkoušíte jiná řešení této chyby, proveďte čisté sestavení, abyste zajistili, že jsou soubory objektů aktuální.

Visual Studio definuje následující symboly, které brání propojení nekompatibilního kódu, což může způsobit chyby za běhu nebo jiné neočekávané chování.

  • _MSC_VER Označuje hlavní a podverzi kompilátoru Microsoft C++ (MSVC) používaného k sestavení aplikace nebo knihovny. Kód kompilovaný pomocí jedné verze MSVC není kompatibilní s kódem kompilovaným pomocí verze, která má různá čísla hlavních a podverze. Další informace najdete _MSC_VER v předdefinovaných makrech.

    Pokud odkazujete na knihovnu, která není kompatibilní s verzí MSVC, kterou používáte, a nemůžete získat nebo sestavit kompatibilní verzi knihovny, můžete použít starší verzi kompilátoru k sestavení projektu: změňte vlastnost sady nástrojů platformy projektu na starší sadu nástrojů. Další informace naleznete v tématu Postupy: Úprava cílové architektury a sady nástrojů platformy.

  • _ITERATOR_DEBUG_LEVEL Označuje úroveň funkcí zabezpečení a ladění, které jsou povoleny ve standardní knihovně C++. Tyto funkce mohou změnit reprezentaci určitých objektů standardní knihovny jazyka C++ a tím je nekompatibilní s těmi, které používají různé funkce zabezpečení a ladění. Další informace najdete v tématu _ITERATOR_DEBUG_LEVEL.

  • RuntimeLibrary Označuje verzi standardní knihovny C++ a modulu runtime jazyka C používaného aplikací nebo knihovnou. Kód, který používá jednu verzi standardní knihovny C++ nebo modulu runtime jazyka C, není kompatibilní s kódem, který používá jinou verzi. Další informace najdete v tématu /MD, /MT, /LD (použití knihovny runtime).

  • _PPLTASKS_WITH_WINRT Označuje, že kód, který používá knihovnu PPL (Parallel Patterns Library), je propojený s objekty zkompilovanými pomocí jiného nastavení pro možnost kompilátoru /ZW . (/ZW podporuje C++/CX.) Kód, který používá nebo závisí na PPL, musí být zkompilován pomocí stejného /ZW nastavení použitého ve zbývající části aplikace.

Ujistěte se, že hodnoty těchto symbolů jsou konzistentní v rámci projektů v řešení sady Visual Studio a také že jsou konzistentní s kódem a knihovnami, na které vaše aplikace odkazuje.

Problémy s knihovnou třetích stran a vcpkg

Pokud se při pokusu o konfiguraci knihovny třetí strany v rámci sestavení zobrazí tato chyba, zvažte instalaci a sestavení knihovny pomocí nástroje vcpkg, správce balíčků C++. vcpkg podporuje rozsáhlý a rostoucí seznam knihoven třetích stran a nastaví všechny vlastnosti konfigurace a závislosti potřebné pro úspěšné sestavení v rámci projektu.

Viz také

Chyby a upozornění linkerů