Megosztás a következőn keresztül:


A Linker eszközök hiba LNK2038

a "név" esetében észlelt eltérés: a "value_1" érték nem egyezik a filename.obj "value_2" értékekkel

Megjegyzések

A linker egy szimbólumeltérést észlelt. Ez a hiba azt jelzi, hogy az alkalmazás különböző részei, beleértve a kódtárakat vagy más objektumkódot, amelyekre az alkalmazás hivatkozik, ütköző definíciókat használnak a szimbólumhoz. Az észlelési eltérés pragma az ilyen szimbólumok meghatározására és az ütköző értékek észlelésére szolgál.

Lehetséges okok és megoldások

Ez a hiba akkor fordulhat elő, ha a projekt egyik objektumfájlja elavult. Mielőtt más megoldásokat próbál ki erre a hibára, végezzen tiszta összeállítást, hogy az objektumfájlok naprakészek legyenek.

A Visual Studio az alábbi szimbólumokat határozza meg a nem kompatibilis kód csatolásának megakadályozása érdekében, ami futásidejű hibákat vagy más váratlan viselkedést okozhat.

  • _MSC_VER Az alkalmazás vagy tár létrehozásához használt Microsoft C++ fordító (MSVC) fő- és alverziószámait jelzi. Az MSVC egy verziójával lefordított kód nem kompatibilis a különböző fő- és alverziószámokkal összeállított kóddal. További információ: _MSC_VERElőre definiált makrók.

    Ha olyan tárhoz kapcsolódik, amely nem kompatibilis a használt MSVC verziójával, és nem tudja beszerezni vagy létrehozni a kódtár kompatibilis verzióját, a fordító egy korábbi verziójával készítheti el a projektet: módosítsa a projekt Platform Toolset tulajdonságát a korábbi eszközkészletre. További információért lásd: A célkeretrendszer és a platformeszközkészlet módosítása.

  • _ITERATOR_DEBUG_LEVEL A C++ standard kódtárban engedélyezett biztonsági és hibakeresési funkciók szintjét jelzi. Ezek a funkciók megváltoztathatják bizonyos C++ standard kódtár-objektumok megjelenítését, és ezáltal nem kompatibilisek a különböző biztonsági és hibakeresési funkciókat használókkal. További információ: _ITERATOR_DEBUG_LEVEL.

  • RuntimeLibrary Az alkalmazás vagy tár által használt C++ standard kódtár és C futtatókörnyezet verzióját jelzi. A C++ standard kódtár vagy a C futtatókörnyezet egyik verzióját használó kód nem kompatibilis a másik verziót használó kódokkal. További információ: /MD, /MT, /LD (Run-Time könyvtár használata).

  • _PPLTASKS_WITH_WINRT Azt jelzi, hogy a párhuzamos minták kódtárát (PPL) használó kód a /ZW fordítóbeállítás másik beállításával lefordított objektumokhoz van csatolva. (/ZW támogatja a C++/CX nyelvkiterjesztést.) A PPL-t használó vagy attól függő kódot az alkalmazás többi részében használt /ZW beállítással kell kompilálni.

Győződjön meg arról, hogy ezeknek a szimbólumoknak az értékei konzisztensek a Visual Studio-megoldás projektjeiben, valamint az alkalmazás által összekapcsolt kódokkal és kódtárakkal is konzisztensek.

Harmadik féltől származó kódtár hibái és vcpkg

Ha ez a hiba akkor jelenik meg, amikor egy harmadik féltől származó kódtárat próbál konfigurálni a build részeként, fontolja meg a Vcpkg, egy C++ csomagkezelő használatát a kódtár telepítéséhez és létrehozásához. A vcpkg támogatja a külső kódtárak nagy és növekvő listáját, és a projekt részeként beállítja a sikeres buildekhez szükséges összes konfigurációs tulajdonságot és függőséget.

Lásd még

A Linker Tools hibái és figyelmeztetései