ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл 'D: \ ... \ MyProj.exe' - PullRequest
46 голосов
/ 11 октября 2010

При использовании Visual Studio 2010, когда я собираю + запускаю приложение через короткие промежутки времени, я часто получаю следующую ошибку. Если я просто подожду минуту или две и попробую еще раз, все будет хорошо. Unlocker утверждает, что ни один дескриптор не блокирует исполняемый файл.
Как узнать, что его блокирует?
Если это сама Visual Studio, что мне следует сделать, чтобы остановить ее? или альтернативно выпустить файл?

1>------ Build started: Project: MyProj, Configuration: Release Win32 ------
...
1>InitializeBuildStatus:
1>  Creating "Release\MyProj.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 ==========

Ответы [ 15 ]

38 голосов
/ 13 октября 2011

Была проблема после переустановки сегодня. Убедитесь, что служба Application Experience запущена и не отключена. Если он установлен на руководство, я полагаю, VS запустит его.

13 голосов
/ 11 октября 2010

Возможно, у вас был случайный процесс сборки, который блокировал исполняемый файл, и он (случайный процесс) не был очищен. В этом случае закройте Visual Studio, откройте проводник процессов и отключите все процессы, которые вы можете найти, связанные с Visual Studio. Затем снова откройте Visual Studio и попробуйте перестроить свой проект.

11 голосов
/ 06 сентября 2011

Я знаю, что это довольно старая версия, но у меня только что была исправлена ​​та же проблема с Visual Studio 2010, так что другие все еще могут столкнуться с этим.

Добавление пути моего проекта к "Исключенным элементам" в моемНастройки антивируса AVG, похоже, устранили проблему для меня.

Попробуйте отключить любой антивирус / резидентный щит и посмотрите, решит ли он проблему.Если это так, добавьте путь вашего проекта к исключенным каталогам в вашей конфигурации AV.

5 голосов
/ 11 октября 2010

файл может быть заблокирован, потому что он запускается сейчас. Попробуйте убить процесс с помощью диспетчера задач.

4 голосов
/ 26 ноября 2012

Как сказал Джонатан, да, переименование может помочь обойти эту проблему. Но, например, Я был вынужден много раз переименовывать целевой исполняемый файл, это утомительно и нехорошо.

Проблема заключается в том, что когда вы запускаете свой проект, а затем получаете ошибку, из-за которой вы не можете создать свой проект - это так, потому что этот исполняемый файл (ваш проект) все еще выполняется (вы можете проверить его через диспетчер задач). Если вы просто переименуете целевую сборку, через некоторое время вы получите ту же ошибку с новым именем, а если откроете диспетчер задач, то увидите, что вы мусорите систему своими незавершенными проектами.

Visual Studio для создания новой сборки необходимо удалить предыдущий исполняемый файл и создать новый вместо старого, он не может этого сделать, пока исполняемый файл еще запущен. Итак, если вы хотите сделать новую сборку, процесс старого исполняемого файла должен быть закрыт! (Странно, что Visual Studio не закрывает его сам по себе, и да, похоже, что он немного глючит).

enter image description here

Это немного утомительно, если вы делаете это вручную, так что вы можете просто щелкнуть файл bat и просто щелкнуть по нему, когда у вас возникнет такая проблема:

taskkill /f /im name_of_target_executable.exe

у меня это работает по крайней мере. Как предположение - я не закрываю свою программу должным образом в C ++, поэтому может быть нормально, что Visual Studio поддерживает ее работу.

Сложение: Есть отличный шанс быть таковым из-за незавершенного применения. В конце проверьте, вызвали ли вы PostQuitMessage, чтобы сообщить Windows, что вы сделали.

4 голосов
/ 30 марта 2012

Возможно, вы не закрыли выход.Закройте вывод, очистите и пересоберите файл.Возможно, вы сможете запустить файл сейчас.

2 голосов
/ 26 октября 2011

У меня была та же проблема, но с использованием кодовых блоков.Из-за этой проблемы я бросил программирование, потому что каждый раз, когда я просто хотел выбросить свой компьютер из окна.

Я хочу поблагодарить user963228, чей ответ действительно является решением этой проблемы.Вы должны включить Application Experience при запуске вручную (вы можете сделать это, выполнив поиск служб в меню «Пуск» Windows 7, а затем найти Application Experience и щелкнуть свойства).

Эта проблема возникает, когда люди хотят настроить свои Windows 7машина, и они решили отключить некоторые бессмысленные службы, поэтому они гуглят некоторое руководство по настройке, и большинство из этих руководств говорят, что Application Experience безопасно отключить.

Я думаю, что эта проблема должна быть связана с проблемой Windows 7, а не VSпроблема, и она должна быть более заметной - мне понадобилось много времени, чтобы найти это решение.

Еще раз спасибо!

2 голосов
/ 10 декабря 2010

Я пришел к выводу, что это какая-то ошибка в Visual Studio. Возможно, C Джонсон прав - возможно, процесс сборки держит файл заблокированным.

У меня есть обходной путь, который работает - каждый раз, когда это происходит, - я изменяю Целевое имя исполняемого файла в свойствах Проекта (щелкните проект правой кнопкой мыши, затем Свойства \ Конфигурация \ Общие \ Имя цели).

Таким образом VS создает новый исполняемый файл, и проблема решается. Каждые несколько раз, когда я делаю это, я возвращаюсь к исходному имени, таким образом, циклически повторяя ~ 3 имени.

Если кто-то найдет причину этого и решение, пожалуйста, ответьте, и я могу перенести ответ на ваш, так как мой обходной путь.

1 голос
/ 16 сентября 2015

Обычно это означает, что ваша программа заблокирована и не может быть уничтожена с помощью диспетчера задач или проводника процессов. Я встречал аналогичный случай, когда моя программа имела исключение во время работы и запускала отчет об ошибках Windows, который заблокировал программу. В случае, если сообщение об ошибке Windows блокирует программу, вы можете перейти к панели управления-> Система и безопасность-> Центр поддержки-> Параметры сообщения о проблеме, чтобы установить «Никогда не проверять решения». Надеюсь, это поможет.

1 голос
/ 13 июня 2014

Я только что столкнулся с той же проблемой с VS2013, создавая драйверы устройств на C ++, и ни один из вышеперечисленных, казалось, не решил проблему Однако я только что обнаружил, что в моем случае проблема, по-видимому, связана с VMWare.

Я работал на клиенте рабочей станции VMWare с общей папкой, определенной на виртуальной машине на моем диске C :. Когда я отключил общие папки в настройках виртуальной машины, VS2013 смог успешно создать мои файлы .exe.

Мой новый процесс:

1) Отключите общую папку на виртуальной машине (Параметры виртуальной машины | Параметры | Общие папки - и снимите флажок) 2) Запустите сборку на главном ПК 3) Снова включите общую папку (и продолжите оттуда)

Надеюсь, это может помочь кому-то еще.

(Кстати, ошибки, которые вы получаете, заключаются в том, что .exe (или другие файлы) заблокированы или требуют разрешения администратора, но это - красная сельдь. .)

...