Ошибка связывания в vc ++ - PullRequest
0 голосов
/ 21 декабря 2011

Я очень плохо знаком с VC ++ и впервые запускаю программу на VC ++. Я строго следовал инструкциям, приведенным в книге «Программирование Microsoft Visual C ++», и создал один проект в виде инструкций.

О программе ex03a.exe: Я видел в пути "... \ Ex03a \ Debug \", и в этом нет никакого файла, такого как ex03a.exe.

Я протестировал свой vc ++, выполнив простой файл Test.cpp. Мне удалось запустить простую программу на c ++, и я получил вывод. И Test.exe находится в папке \ Test \ Debug \ Test.exe

Мой вопрос: Как я мог избавиться от ошибки. enter image description here

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

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

И почти всегда это не работает, потому что файл заблокирован.

И почти всегда это происходит потому, что файл является исполняемым файлом, который в данный момент выполняется: -)

Это специальность Windows - исполняемый файл не просто загружается, он блокируется на все время выполнения.Вероятно, это связано с тем, что исполняемые файлы (которые по какой-либо причине называются переносимыми исполняемыми файлами) содержат не только код, но обычно и произвольное количество ресурсов (например, изображений и т. Д.), И изменение файла на лету может привести кприложение терпит крах при попытке прочитать один из этих ресурсов во время выполнения.

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

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

0 голосов
/ 21 декабря 2011

Я вижу, что на этом снимке экрана вы работаете с несколькими версиями VC6.

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

VC пытается перезаписать исполняемый файл, который запущен в данный момент, но встречает именно эту ошибку.

Всегда закрывайте программу, когда закончите.

...