C ++: Link: Debug xxxxx.exe não encontrado ou não foi construído pelo último link incremental; realizando link completo
-
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?
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.
- Download Procmon da Microsoft.
- Execute -o, configure um filtro para procurar acessos ao caminho que contenha seu nome .exe.
- Faça um link.
- 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á.
- 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.