C ++: Enlace: Debug xxxxx.exe no encontrado o no construido por el último enlace incremental; Realizando un enlace completo

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Uso de Visual Studio 2008 SP1,
Esta línea:

LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link

Aparece cada vez que compilé el proyecto, no importa cuán pequeño haga un cambio.
¿Cuáles podrían ser las razones para eso?

¿Fue útil?

Solución 2

Entonces resulta que el problema se soluciona si agrego /INCREMENTAL a la línea de comando enlazador. Esto a pesar del hecho de que el comportamiento predeterminado de acuerdo con los documentos es permitir la vinculación incremental.

Extraño.

Otros consejos

Vieja pregunta, pero en caso de que alguien sigue siendo un problema (y lo es ...).

El enlace incremental es incompatible con la generación del archivo de manifiesto (OPTS PROJ> Linker> Manifiester Archivo> Generar manifiesto: Sí). De hecho, la generación del manifiesto modifica EXE/DLL, por lo que el enlazador tiene que hacer un enlace completo.

Hay algunas soluciones, para más detalles:http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/

La solución temporal (y más fácil/más rápida) es deshabilitar la generación manifiesta durante el desarrollo y permitirla nuevamente en la etapa de lanzamiento. Aunque esto deshabilita la GUI de estilo XP/Vista para la aplicación (se parecen los controles en "modo clásico").

Realmente disparando en la oscuridad pero, ...

¿Mueves el xxxxx.exe desde donde se construye a otro lugar? El objetivo de un enlace incremental es cambiar un EXE existente. Si no hay ninguno, será difícil ...

Otra razón posible es que el archivo se cambió después de la compilación (probablemente por otra herramienta) ...

Todas las razones se enumeran en el elemento de ayuda para /incremental:

Además, Link realiza un enlace completo si se produce alguna de las siguientes situaciones:

Falta el archivo de estado incremental (.ilk). (El enlace crea un nuevo archivo .ilk en preparación para el enlace incremental posterior).

No hay permiso de escritura para el archivo .ilk. (El enlace ignora el archivo .ilk y los enlaces de manera no escremental).

Falta el archivo de salida .exe o .dll.

La marca de tiempo de .ilk, .exe o .dll se cambia.

Se cambia una opción de enlace. La mayoría de las opciones de enlace, cuando se cambian entre compilaciones, causan un enlace completo.

Se agrega u omite un archivo objeto (.obj).

Se cambia un objeto que se compiló con la opción /yu /z7.

  1. Descargar procmon de Microsoft.
  2. Ejecutarlo, configure un filtro para que esté buscando accesos a la ruta que contiene su nombre .exe.
  3. Hacer un enlace.
  4. Vea qué problema está teniendo: lo encuentra, ¿registra un error al abrirlo? Procmon registrará todos los archivos abiertos, leídos, cerrados, etc. Si recibe un error, lo registrará.
  5. También asegúrese de que pueda encontrar el archivo .ilk; creo que también lo necesita.

(También en la oscuridad) Una posible razón es que usa un encabezado de todo el proyecto que hace referencia al __DATE__ macro. Pero en ese caso, también verías una recompilación completa (¿verdad?)

En mi caso, recibí este error ayer.

VS Set code generation > runtime Library a Multi-threaded Debug DLL (/MDd) en vez de Multi-threaded Debug (/MTd).

Si reciro nuevo proyecto, esta mala configuración vuelve a ocurrir. Cambio manualmente a /Mtd, entonces no ocurre ningún error.

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