Errore degli strumenti del linker LNK2038

mancata corrispondenza rilevata per 'name': il valore 'value_1' non corrisponde al valore 'value_2' in filename.obj

Una mancata corrispondenza del simbolo è stata rilevata dal linker. Questo errore indica che diverse parti di un'app, incluse librerie o altro codice oggetto a cui l'app si collega, usano definizioni in conflitto del simbolo. Il pragma rileva la mancata corrispondenza viene usato per definire tali simboli e rilevare i relativi valori in conflitto.

Possibili cause e soluzioni

Questo errore può verificarsi quando un file oggetto nel progetto è scaduto. Prima di provare altre soluzioni a questo errore, eseguire una compilazione pulita per garantire che i file oggetto siano correnti.

Visual Studio definisce i simboli seguenti per impedire l'accesso del codice incompatibile che può generare errori di runtime o altri comportamenti imprevisti.

  • _MSC_VER Indica i numeri di versione principale e secondaria del compilatore Microsoft C++ (MSVC) usato per compilare un'app o una libreria. Il codice compilato usando una versione di MSVC non è compatibile con il codice compilato usando una versione con numeri di versione principali e secondari diversi. Per altre informazioni, vedere _MSC_VER in Macro predefinite.

    Se si esegue il collegamento a una libreria non compatibile con la versione di MSVC in uso e non è possibile acquisire o compilare una versione compatibile della libreria, è possibile usare una versione precedente del compilatore per compilare il progetto: modificare la proprietà Platform Toolset del progetto nel set di strumenti precedente. Per altre informazioni, vedere Procedura: Modificare il framework di destinazione e il set di strumenti della piattaforma.

  • _ITERATOR_DEBUG_LEVEL Indica il livello di funzionalità di sicurezza e debug abilitate nella libreria standard C++. Queste funzionalità possono modificare la rappresentazione di alcuni oggetti della libreria C++ standard e quindi renderli incompatibili con quelli che utilizzano funzionalità di sicurezza e debug diverse. Per altre informazioni, vedere _ITERATOR_DEBUG_LEVEL.

  • RuntimeLibrary Indica la versione della libreria standard C++ e del runtime C usati da un'app o da una libreria. Il codice che utilizza una versione della libreria C++ standard o del runtime C è incompatibile con il codice che utilizza una versione diversa. Per altre informazioni, vedere /MD, /MT, /LD (utilizzo della libreria di runtime).

  • _PPLTASKS_WITH_WINRT Indica che il codice che usa la libreria PPL (Parallel Patterns Library) è collegato agli oggetti compilati usando un'impostazione diversa per l'opzione del compilatore /ZW . (/ZW supporta C++/CX. Il codice che usa o dipende dal PPL deve essere compilato usando la stessa /ZW impostazione usata nel resto dell'app.

Assicurarsi che i valori di questi simboli siano coerenti in tutti i progetti della soluzione Visual Studio e che siano coerenti con il codice e le librerie a cui l'app si collega.

Problemi di libreria di terze parti e vcpkg

Se viene visualizzato questo errore quando si tenta di configurare una libreria di terze parti come parte della compilazione, provare a usare vcpkg, una gestione pacchetti C++ per installare e compilare la libreria. vcpkg supporta un elenco di librerie di terze parti di grandi dimensioni e imposta tutte le proprietà e le dipendenze di configurazione necessarie per le compilazioni riuscite come parte del progetto.

Vedi anche

Errori e avvisi degli strumenti del linkers