Visual Studio .NET 2003 - No haga caso específico de la Biblioteca LIBCMT vs libcmtd
-
30-09-2019 - |
Pregunta
Tengo una plantilla de proyecto VS .NET 2003, cuya copia colegas y personalizar la hora de desarrollar su software.
Parece que la plantilla se alteró un tiempo atrás para establecer la propiedad IgnoreSpecificLibrary tener LIBCMT.LIB tanto para liberación y versiones de depuración (es decir, tanto para la liberación y de depuración, la acumulación debe ignorar LIBCMT.LIB en el enlazador).
Algunos proyectos basados ??en esta desde entonces se han construido, con la versión de lanzamiento tirando en LIBCMTD.LIB (evidente al mirar a través del archivo del proyecto .map) que parece haber causado algunos problemas de tiempo de ejecución (es decir, una ventana de diálogo como ésta se muestre a través de un punto de ruptura había sido establecido).
¿Tiene el establecimiento IgnoreSpecificLibrary para excluir LIBCMT.LIB automáticamente que el enlace del proyecto contra LIBCMTD.LIB?
Lo que es extraño es que la construcción de la plantilla (con la configuración incorrecta) enlaces contra LIBCMT.LIB mientras que algunos de los proyectos a medida (aunque no todos) de enlace contra LIBCMTD.LIB.
¿Alguna idea?
Solución
Esto es lo que sucedió:
Después de compilar el enlazador toma sus objetos-archivos y crear entre otros una tabla de símbolos, que tiene symol-petición que no han sido fullfilled. A continuación, el enlazador pasa por tu lista de bibliotecas que intentan resolver esos símbolos unfullfilled. Dado que usted no hace caso LIBCMT.LIB, su biblioteca de terceros ha dejado o añadido algunos símbolos sin resolver y que contiene una solicitud de enlazador para resolver los de licmtd.lib (y tal vez otras librerías, así), ya que fue Compilado con la opción de depuración.
Si no hubiera ignorado LIBCMT.LIB esos símbolos más probable es que se resuelva por LIBCMT.LIB y no había ninguna necesidad de tirar de cosas de LIBCMTD.LIB (aunque que se miraba para resolver otros símbolos que aún estaban unfullfilled)
Se puede tratar de igmore LIBCMTD.LIB también. Si ahora recibe externos NO RESLTO entonces era probebly hay una idea buena para ignorar libcmt.dll.
Otros consejos
Muchos proyectos ignoran el LIBCMT.LIB, porque entra en conflicto con la versión msvcrt.lib dinámico. Haciendo caso omiso de LIBCMT en el enlazador que el proyecto de compilación con msvcrt.lib