Подтвердить что ты не робот

LINK: фатальная ошибка LNK1104: невозможно открыть файл 'D: \...\MyProj.exe'

Использование 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 ==========
4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

enter image description here

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

taskkill /f /im name_of_target_executable.exe

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

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

Ответ 7

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

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

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

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

Ответ 8

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

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

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

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

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

Ответ 9

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

Итак, при сбое devenv.exe все еще может работать и удерживать файл (ы). В качестве альтернативы (как я только что открыл), vstestrunner или vstestdiscovery могут также храниться в файле.

Убейте все эти процессы, и это может решить проблему.

Ответ 10

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

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

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

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

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

(BTW, вы получаете ошибки в том, что .exe(или другие файлы) заблокированы или требуют разрешения администратора, но это красная селедка. Мне кажется, что общий ресурс VMWare приводит к тому, что эти файлы отображаются как заблокированные.)

Ответ 11

Ошибка возникает (по крайней мере иногда) из слишком длинных путей. В моем проекте просто сокращение пути выходного файла выполняет задание: "Свойства/Свойства конфигурации/Общий/Промежуточный каталог"

Кажется, что я ударил ограничение на пробел в 250 символов.

Ответ 12

Работа с принципами и практикой программирования Bjarne Stroustrup с использованием примера "FLTK" на С++, я получил ту же ошибку, но после того, как через 1 час у меня появилась идея, я отслеживал одну из библиотек, которые уже были видны в Project Properties → Linker → Input → Дополнительные зависимости, в моем случае я отследил kernel32.lib, чтобы увидеть, где находится, и увидел, что в разных папках было много kernel32.lib. Поэтому я начал копировать FLTK-библиотеки в этих папках и последний, с которым я работал. Visual Studio 2013 Express нашел файл fltkd.lib, и код работал.

В моем случае правильный маршрут был C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86

Я не знаю, как установить этот маршрут внутри Visual Studio.

Не уверен, что эта папка Windows kits была создана, когда я установил Microsoft Windows SDK для Windows 7 и .NET Framework 4 (ISO) http://www.microsoft.com/en-us/download/details.aspx?id=8442

Надеюсь, что вам помогут люди.

Ответ 13

У меня просто была та же проблема. Со мной exe все еще работал, но я не мог закончить его с помощью диспетчера задач. Просто перезапустив VS, это сработало для меня.

Ответ 14

Моя заключается в том, что если вы установили опцию выбора файла MASM, то это даст вам эту ошибку.

Просто используйте

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

это нормально.

Но никаких дополнительных проблем у вас нет.

Ответ 15

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