C ++: LINK: debug \ XXXXX.exe introuvable construit ou non par le dernier maillon supplémentaire; effectuer le lien complet
-
20-09-2019 - |
Question
En utilisant Visual Studio 2008 SP1,
Cette ligne:
LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link
apparaît chaque fois que je compilez le projet, peu importe la taille d'un changement que je fais.
Quelles pourraient être les raisons?
La solution 2
Il se trouve que le problème, il fixe l'auto si j'ajoute /INCREMENTAL
à la ligne de commande de liaison. Ceci en dépit du fait que le comportement par défaut en fonction des documents est de permettre la liaison incrémentielle.
Etrange.
Autres conseils
question ancienne, mais juste au cas où quelqu'un est toujours un problème (et il est ..).
lien incrémental est incompatible avec la génération de fichier manifeste (Proj opte> Linker> Fichier Manifest> Générer Manifest: Oui). En effet, la génération modifie manifeste exe / dll donc éditeur de liens doit faire la liaison complète.
Il y a quelques solutions de contournement, pour plus de détails: http://chadaustin.me/2009/05/incremental-linking- et-embedded-manifeste /
Solution temporaire (et plus facile / rapide) est de désactiver la génération manifeste au cours du développement et lui permettre de nouveau dans la phase de libération. Bien que cela désactive XP / Vista style graphique pour l'application (contrôles ressemblent en mode « classique »).
tir vraiment dans l'obscurité, mais ...
Avez-vous le déplacez XXXXX.exe d'où il est construit à un autre endroit? Le point de l'ensemble d'un lien supplémentaire est de changer un exe existant. S'il n'y en a pas, il sera difficile ...
Une autre raison possible est que le fichier a été changé après la construction (probablement par un autre outil) ...
Toutes les raisons sont énumérées dans l'élément d'aide pour / INCREMENTAL :
En outre, LINK effectue un complet lien si l'un des éléments suivants situations se produisent:
Le fichier état incrémental (.ilk) est manquant. (LINK crée un nouveau fichier .ilk en vue de la suite la liaison incrémentielle.)
Il n'y a pas l'autorisation d'écriture pour la fichier .ilk. (LINK ignore le fichier .ilk et des liens nonincrementally.)
Le fichier de sortie .exe ou .dll est manquante.
L'horodatage du .ilk, Exe, ou .dll est modifié.
Une option LINK est modifiée. La plupart LINK options, lorsqu'ils sont modifiés entre construit, faire un lien complet.
Un fichier d'objet (OBJ) est ajouté ou omis.
Un objet qui a été compilé avec le Option / Yu / Z7 est modifiée.
- Télécharger procmon de Microsoft.
- exécuter, mettre en place un filtre de sorte que vous êtes à la recherche d'accès au chemin qui contient votre nom .exe.
- Faire un lien.
- Voir quel trouble il est d'avoir - t-il trouver, faut-il enregistrer une erreur sur l'ouvrir. Procmon enregistre chaque fichier ouvert, lire, à proximité, etc. Si elle obtient une erreur, il l'enregistrer.
- Assurez-vous également qu'il peut trouver le fichier .ilk -. Je pense qu'il a besoin de cela aussi
(ALSO dans l'obscurité) Une raison possible est que vous utilisez un en-tête de projet à l'échelle faisant référence à la macro __DATE__
. Mais dans ce cas, vous verriez une recompilation complète aussi bien (avez-vous?)
Dans mon cas, j'ai eu hier erreur.
VS ensemble code generation > runtime Library
à Multi-threaded Debug DLL (/MDd)
au lieu de Multi-threaded Debug (/MTd)
.
Si je recrée ce nouveau projet de mauvais réglages se produit de nouveau. Je passe manuellement /Mtd
, aucune erreur se produit.