Visual Studio .NET 2003 - No haga caso específico de la Biblioteca LIBCMT vs libcmtd

StackOverflow https://stackoverflow.com/questions/4344569

  •  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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top