Lien: fatal error LNK1104: cannot open file 'D:...MyProj.exe'

en utilisant Visual Studio 2010, quand je construis + exécute mon application dans de courts intervalles, j'obtiens souvent l'erreur suivante. Si j'attends une minute ou deux et que j'essaie encore, ça marche. Unlocker affirme qu'aucune poignée ne verrouille le fichier exécutable.

Comment puis-je découvrir ce blocage?

si C'est Visual Studio, Que dois-je faire pour l'arrêter? ou, alternativement, pour libérer le fichier?

1>------ Build started: Project: MyProj, Configuration: Release Win32 ------
...
1>InitializeBuildStatus:
1>  Creating "ReleaseMyProj.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  All outputs are up-to-date.
1>  SomeFile1.cpp
1>ResourceCompile:
1>  All outputs are up-to-date.
1>LINK : fatal error LNK1104: cannot open file 'D:...MyProj.exe'
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.94
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
45
demandé sur Jonathan 2010-10-11 17:00:02

15 réponses

Eu ce problème après une réinstallation aujourd'hui. Assurez-vous que le service D'expérience D'Application est lancé et non réglé à désactivé. Si C'est réglé sur Manuel, je crois que VS va le démarrer.

38
répondu user963228 2011-10-13 06:41:03

vous avez probablement eu un processus de compilation errant qui verrouillait l'exécutable, et il (le processus errant) n'a pas été nettoyé. Dans ce cas, fermez visual studio, ouvrez process explorer et désactivez tous les processus liés à visual studio. Puis ouvrez visual studio à nouveau et essayez de reconstruire votre projet.

13
répondu C Johnson 2010-10-11 13:21:44

je suis conscient que c'est assez ancien mais j'ai eu le même problème avec Visual Studio 2010 tout rafistolé pour que d'autres puissent encore tomber dans ce piège.

L'ajout de mon chemin de projet à "Exluded Items" dans Mes paramètres anti-virus Moy.semble avoir corrigé le problème pour moi.

essayez de désactiver tout anti-virus/bouclier résident et voir si cela corrige le problème. Si c'est le cas, ajoutez votre chemin de projet aux répertoires exclus de votre config AV.

11
répondu standrejo 2011-09-05 21:56:40

le fichier peut être verrouillé car il est en cours d'exécution maintenant. Essayez de tuer le processus avec un gestionnaire de tâches.

5
répondu Ilya Smagin 2010-10-11 13:08:32

vous n'avez peut-être pas fermé la sortie. Fermez la sortie, nettoyez et reconstruisez le fichier. Vous pouvez peut-être lancer le fichier maintenant.

4
répondu Balaji 2012-03-30 04:00:35

comme Jonathan l'a dit, oui, renommer peut aider à contourner ce problème. Mais, par exemple, j'ai été forcé de renommer cible exécutable plusieurs fois, c'est quelque chose de fastidieux et pas bon.

le problème réside dans le fait que lorsque vous exécutez votre projet et que vous obtenez plus tard une erreur, vous ne pouvez pas construire votre projet - c'est ainsi parce que cet exécutable (votre projet) est toujours en cours d'exécution (vous pouvez le vérifier via le Gestionnaire des tâches.) Si vous renommez simplement target build, quelque temps plus tard vous obtiendrez la même erreur avec new nom trop et si vous ouvrez un gestionnaire de tâches, vous verrez que vous Système de déchets avec vos projets non finis.

Visual studio pour faire une nouvelle construction besoin de supprimer l'exécutable précédent et de créer un nouveau au lieu de l'ancien, il ne peut pas le faire tant que l'exécutable est encore en cours d'exécution. Donc, si vous voulez faire une nouvelle construction, le processus de l'ancien exécutable doit être fermé! (il est étrange que visual studio ne le ferme pas tout seul et oui, il ressemble à un buggy comportement.)

enter image description here

il est fastidieux de le faire manuellement, donc vous pouvez juste un fichier bat et cliquez dessus quand vous avez un tel problème:

taskkill /f /im name_of_target_executable.exe

cela fonctionne pour moi au moins. Comme une supposition - Je ne ferme pas mon programme correctement en C++, il est donc peut-être normal pour visual studio de le maintenir en marche.

ajout: Il y a une grande chance de l'être , parce que l'application n'est pas terminée. Vérifiez si vous avez appelé PostQuitMessage à la fin, afin de donner à connaître de Windows que vous avez terminé.

4
répondu Tebe 2012-11-26 16:02:45

j'en ai conclu qu'il s'agit d'une sorte de bogue visuel de Studio. Peut - être que c Johnson a raison-peut-être que le processus de construction garde le fichier verrouillé.

j'ai une solution de contournement qui fonctionne - à chaque fois que cela se produit - je change le nom cible de l'exécutable sous les propriétés du projet (clic droit sur le projet, puis Propriétés\Configuration Properties\General\Target Name).

de cette façon VS crée un nouvel exécutable et le problème est contourné. Tous les quelques fois où j' faire ceci je retourne au nom original, donc le vélo à travers ~3 noms.

si quelqu'un trouve la raison de ceci et une solution, s'il vous plaît répondez et je peux déplacer la réponse à la vôtre, comme la mienne est une solution de contournement.

2
répondu Jonathan 2010-12-10 08:16:32

j'ai eu le même problème, Cependant en utilisant Codeblocks. À cause de ce problème, j'ai arrêté la programmation parce qu'à chaque fois je voulais juste jeter mon ordinateur par la fenêtre.

je tiens à remercier user963228 qui la réponse est vraiment une solution à cela. Vous devez mettre L'expérience D'Application sur le démarrage Manuel (vous pouvez le faire en recherchant des services dans windows 7 menu Démarrer, puis trouver L'expérience D'Application et cliquez sur Propriétés).

ce problème se produit quand les gens veulent tweak theyr Windows 7 machine, et ils décident de désactiver certains services inutiles, de sorte qu'ils google certains guide de modification et la plupart de ces guides disent que L'expérience de L'Application est Sécuritaire à désactiver.

je pense que ce problème doit être lié à windows 7 problème, de ne pas VS problème et il doit être plus visible - il m'a fallu longtemps pour trouver cette solution.

Merci encore!

2
répondu Peeter 2011-10-26 18:41:00

juste pour ajouter une autre solution à la liste, ce que J'ai trouvé est que Visual Studio (2012 dans mon cas) verrouille parfois des fichiers sous différents processus.

Donc, sur un crash, devenv.exe peut toujours être en cours d'exécution et de maintien sur le(S) fichier (s). Alternativement (comme je viens de le découvrir), vstestrunner ou vstestdiscovery pourrait aussi bien tenir le fichier.

tuer tous ces processus et il pourrait régler le problème.

1
répondu SJoshi 2014-01-04 00:16:11

je viens de rencontrer le même problème avec VS2013, créer des pilotes de périphériques en C++ , et aucun de ces problèmes ne semble avoir été résolu. Cependant, je viens de découvrir que dans mon cas, la question semble avoir été VMWare).

j'exécutais un client de poste de travail VMWare avec un dossier partagé défini sur la VM sur l'ensemble de mon lecteur C:. Lorsque j'ai désactivé les dossiers partagés sur les paramètres VM, VS2013 a été en mesure de construire mon .EXE.

mon nouveau procédé est:

1) Désactiver le dossier partagé sur la vm (Paramètres | Options | Dossiers partagés de la VM - et décocher la case) 2) Lancer la construction sur le PC hôte 3) RÉ-activer le dossier partagé (et de procéder à partir de là)

espérons que cela puisse aider quelqu'un d'autre.

(BTW, les erreurs que vous recevez sont que le .exe (ou d'autres fichiers) sont verrouillés ou nécessitent la permission de L'administrateur, mais c'est une diversion - il me semble que le partage VMWare fait apparaître ces fichiers comme verrouillé.)

1
répondu blairh 2014-06-13 17:56:41

l'erreur vient (au moins parfois) de chemins trop longs. Dans mon projet réduire simplement le chemin du fichier de sortie fait le travail: "Properties/Propriétés De Configuration/Générale/Intermédiaire Répertoire"

il semble que j'ai atteint la limite de 250 caractères.

0
répondu Jesko 2013-03-07 14:00:42

travailler avec Bjarne Stroustrup principes de programmation et de pratique en utilisant C++" FLTK " exemple j'ai eu la même erreur mais après environ 1 heure j'ai eu une idée, j'ai suivi un des libs déjà vu dans les propriétés du projet -> Linker -> Input -> dépendances supplémentaires, dans mon cas j'ai suivi le kernel32.lib pour voir où était situé et vu qu'il y avait beaucoup de kernel32.lib dans des dossiers différents. Alors j'ai commencé à copier les fichiers FLTK dans ces dossiers et le dernier que j'ai essayé a fonctionné. Visual Studio 2013 Express a trouvé le fltkd.lib et le code ont marché.

dans mon cas, la bonne route était C:\Program fichiers (x86)\Kits Windows\8.1\Lib\winv6.3 \ um\x86

Je ne sais pas comment définir cette route à L'intérieur de Visual Studio.

Je ne sais pas si ce dossier Windows kits a été créé lorsque J'ai installé Microsoft Windows SDK pour Windows 7 et .net Framework 4 (ISO) http://www.microsoft.com/en-us/download/details.aspx?id=8442

L'espoir qui vous aide gens.

0
répondu CpluslpusNoob507 2013-12-14 03:29:20

je viens d'avoir le même problème. Avec moi, l'exe fonctionnait toujours, mais je ne pouvais pas en finir avec le Gestionnaire des tâches. Juste en redémarrant VS, ça a marché pour moi.

0
répondu Jan_ 2016-03-31 12:19:25

Mine est que si vous définissez L'option MASM listing file une sélection supplémentaire, elle vous donnera cette erreur.

il suffit d'utiliser

 Enable Assembler Generated Code Listing   Yes/Sg
 Assembled Code Listing $(ProjectName).lst

il est très bien.

Mais tout extra, vous avez problème.

0
répondu Dennis Ng 2017-10-15 04:40:32

Habituellement, cela signifie que votre programme est verrouillé et pourrait ne pas être tué par le Gestionnaire des tâches ou l'Explorateur de processus. J'ai rencontré un cas similaire que mon programme a eu une exception pendant l'exécution et a déclenché le rapport d'erreur de windows qui a verrouillé le programme. pour le cas où windows error reporting verrouille le programme, vous pouvez aller dans le panneau de configuration->système et Sécurité->Centre D'Action->paramètres de rapport de problèmes pour définir "Never check for solutions". j'Espère que ça aide.

-1
répondu tkingcer 2015-09-16 11:07:34