C ++: Link: Debug xxxxx.exe não encontrado ou não foi construído pelo último link incremental; realizando link completo

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Usando o Visual Studio 2008 SP1,
Está linha:

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

Aparece toda vez que compilar o projeto, por menor que seja uma mudança que eu faço.
Quais poderiam ser as razões para isso?

Foi útil?

Solução 2

Então, acontece que o problema se conserta se eu adicionar /INCREMENTAL para a linha de comando do vinculador. Isso apesar do fato de que o comportamento padrão de acordo com os documentos é permitir a ligação incremental.

Estranho.

Outras dicas

Pergunta antiga, mas apenas para o caso de alguém, ainda é um problema (e é ..).

O link incremental é incompatível com a geração do arquivo de manifesto (Proj Opts> Linker> Arquivo de manifesto> Gerar manifesto: Sim). De fato, gerar modifica o manifesto EXE/DLL para que o vinculador tenha que fazer um link completo.

Existem algumas soluções alternativas, para mais detalhes:http://chadaustin.me/2009/05/incremental-linking-and-embedded-anifests/

A solução temporária (e mais fácil/mais rápida) é desativar a geração manifesta durante o desenvolvimento e ativá -la novamente no estágio de liberação. Embora isso desative a GUI no estilo XP/Vista para o aplicativo (os controles se parecem no "Modo Classic").

Realmente atirando no escuro, mas ...

Você move o xxxxx.exe de onde ele é construído para outro lugar? O ponto principal de um link incremental é alterar um EXE existente. Se não houver, será difícil ...

Outro motivo possível é que o arquivo foi alterado após a construção (provavelmente por outra ferramenta) ...

Todas as razões estão listadas em o item de ajuda para /incremental:

Além disso, o link executa um link completo se ocorrer alguma das seguintes situações:

O arquivo de status incremental (.ilk) está ausente. (Link cria um novo arquivo .ilk em preparação para a ligação incremental subsequente.)

Não há permissão de gravação para o arquivo .ilk. (O link ignora o arquivo .ilk e vincula não -concrementalmente.)

O arquivo de saída .exe ou .dll está ausente.

O registro de data e hora do .ilk, .exe ou .dll é alterado.

Uma opção de link é alterada. A maioria das opções de link, quando alterada entre as compilações, causa um link completo.

Um arquivo de objeto (.obj) é adicionado ou omitido.

Um objeto que foi compilado com a opção /yu /z7 é alterado.

  1. Download Procmon da Microsoft.
  2. Execute -o, configure um filtro para procurar acessos ao caminho que contenha seu nome .exe.
  3. Faça um link.
  4. Veja que problema está tendo - ele encontra, ele registra um erro ao abri -lo. O Procmon registrará todos os arquivos abrir, ler, fechar etc. Se receber um erro, ele o registrará.
  5. Também verifique se ele pode encontrar o arquivo .ilk - acho que precisa isso também.

(Também no escuro) Uma razão possível é que você usa um cabeçalho em todo o projeto, referenciando o __DATE__ macro. Mas, nesse caso, você verá um recompile completo também (não é?)

No meu caso, recebi esse erro ontem.

Vs conjunto code generation > runtime Library para Multi-threaded Debug DLL (/MDd) ao invés de Multi-threaded Debug (/MTd).

Se eu recriar um novo projeto, essas configurações ruins acontecem novamente. Eu mudei manualmente para /Mtd, então nenhum erro acontece.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top