Compartir a través de


Error de las herramientas del vinculador LNK2038

se detectaron diferencias para "name": el valor "value_1" no coincide con el valor "value_2" en filename.obj

Observaciones

El vinculador ha detectado una diferencia de símbolos. Este error indica que distintas partes de una aplicación, entre las que se incluyen las bibliotecas u otro código de objeto al que se vincula la aplicación, utilizan definiciones del símbolo en conflicto. La pragma detect mismatch se usa para definir estos símbolos y detectar los valores en conflicto.

Posibles causas y soluciones

Este error puede aparecer cuando un archivo objeto del proyecto no está actualizado. Antes de intentar otras soluciones a este error, realice una compilación limpia para garantizar que los archivos objeto están actualizados.

Visual Studio define los símbolos siguientes para evitar la vinculación de código incompatible, que puede producir errores en tiempo de ejecución u otro comportamiento inesperado.

  • _MSC_VER Indica los números de versión principal y secundaria del compilador de Microsoft C++ (MSVC) que se usa para compilar una aplicación o biblioteca. El código compilado con una versión del compilador de MSVC es incompatible con el código compilado mediante una versión que tiene otros números de versión principal y secundaria. Para más información, consulte _MSC_VER en Macros predefinidas.

    Si está vinculando a una biblioteca que no es compatible con la versión de MSVC que usa y no puede adquirir ni compilar una versión compatible de la biblioteca, puede usar una versión anterior del compilador para compilar el proyecto: cambie la propiedad Platform Toolset del proyecto al conjunto de herramientas anterior. Para más información, vea Procedimiento para modificar la plataforma de destino y el conjunto de herramientas de la plataforma.

  • _ITERATOR_DEBUG_LEVEL Indica el nivel de características de seguridad y depuración que se permiten en la biblioteca estándar C++. Estas características pueden cambiar la representación de ciertos objetos de la biblioteca estándar C++ y, por tanto, hacerlos incompatibles con las que utilizan características de seguridad y depuración diferentes. Para obtener más información, vea _ITERATOR_DEBUG_LEVEL.

  • RuntimeLibrary Indica la versión de la biblioteca estándar de C++ y el entorno de ejecución de C usados por una aplicación o biblioteca. El código que usa una versión de la biblioteca estándar C++ o del runtime de C es incompatible con el código que usa una versión diferente. Para obtener más información, consulte /MD, / MT, /LD (Utilizar la biblioteca en tiempo de ejecución).

  • _PPLTASKS_WITH_WINRT Indica que el código que usa la Biblioteca de patrones de procesamiento paralelo (PPL) está vinculado a los objetos compilados mediante un valor diferente para la opción del compilador /ZW. (/ZW admite C++/CX). El código que usa o depende de PPL debe compilarse con la misma /ZW configuración que se usa en el resto de la aplicación.

Asegúrese de que los valores de estos símbolos son coherentes en todos los proyectos de la solución de Visual Studio y que también son coherentes con el código y las bibliotecas a las que se vincula la aplicación.

Problemas de bibliotecas de terceros y vcpkg

Si ve este error al intentar configurar una biblioteca de terceros como parte de la compilación, considere la posibilidad de usar vcpkg, un administrador de paquetes de C++, para instalar y compilar la biblioteca. vcpkg admite una larga lista de bibliotecas de terceros que sigue aumentando y establece todas las propiedades de configuración y las dependencias necesarias para lograr compilaciones correctas como parte del proyecto.

Consulte también

Errores y advertencias de las herramientas del vinculador