¿Por qué la biblioteca MSCVRT generar conflictos en el tiempo de enlace? [duplicar]
-
23-09-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
Estoy construyendo un proyecto en Visual C ++ 2008, que es un ejemplo aplicación basada en MFC para una biblioteca de clases C ++ estática que va a utilizar en mi propio proyecto pronto. Aunque la construcción de la configuración de depuración, me sale el siguiente:
advertencia LNK4098: defaultlib conflictos 'MSVCRT' con el uso de otras librerías; uso / NODEFAULTLIB: biblioteca
Después de usar la opción recomendada (mediante la adición de "msvcrt" al campo "Ignorar biblioteca específica" en la configuración del vinculador de proyectos para la configuración de depuración), el Programa de Vínculos y corre bien. Sin embargo, me gustaría saber por qué se produjo este conflicto, ¿por qué tengo que hacer caso omiso de una biblioteca crítico, y si estoy a esperar que los problemas más tarde si agrego la ignoran, o qué pasa si no (porque la programa construye de todos modos).
Al mismo tiempo, la configuración de lanzamiento advierte:
LNK4075 de advertencia: ignorando '/ EDITANDCONTINUE' debido a '/ OPT: ICF' especificación
LNK4098 de advertencia: defaultlib conflictos 'MSVCRTD' con el uso de otras librerías; uso / NODEFAULTLIB: biblioteca
supongo que el sufijo "D" significa que esta es la versión de depuración de la VC ++ en tiempo de ejecución, ni idea de por qué esto se acostumbra en esta ocasión. De todos modos, añadiendo "msvcrtd" al ignorar campo hace que una gran cantidad de errores de enlace de la forma:
LNK2001 error: símbolo externo sin resolver __imp ___ CrtDbgReportW
Cualquier penetración muy apreciada.
Solución
Esto suele suceder cuando se vincula con una biblioteca estática que utiliza otra versión del tiempo de ejecución de VC ++ (ajuste C++ ->Code Generation->Runtime Library
en las propiedades del proyecto).
Otros consejos
Esto por lo general me pasó cuando yo era (sin querer) la mezcla de diferentes sabores de la RTL, al igual que (como parece ser en su caso) de depuración y de lanzamiento o MT y ST.