Почему при компиляции проекта C ++ в Visual Studio возникает фатальная ошибка «LNK1104: невозможно открыть файл« C: \ Program.obj »»?


117

Я создал новый проект на C ++ в Visual Studio 2008. Код еще не написан; Изменились только настройки проекта.

Когда я компилирую проект, я получаю следующую фатальную ошибку:

фатальная ошибка LNK1104: невозможно открыть файл 'C: \ Program.obj'

Ответы:


153

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

На вкладке Configuration Properties -> Linker -> Input свойств проекта есть свойство Additional Dependencies . Эта проблема была устранена путем изменения этого свойства с:

C: \ Program Files \ software sdk \ lib \ library.lib

Для того, чтобы:

"C: \ Program Files \ sofware sdk \ lib \ library.lib"

Где я добавил цитаты.


17
Боже, ты только что повесил двухдневную погоню за ошибками на 30-
секундную

10
У меня такая же проблема. Если ваш компоновщик правильный, но каталог lib установлен неправильно, может возникнуть та же ошибка. Попробуйте заглянуть в Свойства конфигурации -> Каталоги VC ++ -> Каталоги библиотек, чтобы убедиться, что вы правильно установили библиотеку. Иногда папка lib состоит из папок x86 и x64. Вы должны установить его на один из них (в зависимости от вашего компилятора), а не на папку, содержащую оба.
M4st3rM1nd

1
Не забудьте поставить точку с запятой после "C:\Program Files\sofware sdk\lib\library.lib". Отсутствие a ;также приведет к неправильной компиляции проекта.
roscioli

1
Была эта проблема при попытке создать OpenCV с помощью Visual Studio 2005 (в Windows 8.1) ... и она ее решила. Большой!
AlainD 07

1
Я попробовал, но у меня ничего не вышло. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependencies) -Что мне изменить?
STF

65

Это может произойти, если файл все еще работает.

: -1: ошибка: LNK1104: не удается открыть файл 'debug \ ****. Exe'


4
это тоже была моя проблема!
Kamran Bigdely

1
Я получаю это из-за того, что MS Security Essentials блокирует файл.
Synetech

да, закрыл предыдущее окно консоли, и вдруг библиотека могла быть прочитана.
Кари

15

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

Это было на VS 2013 Ultimate, Windows 8.1.


4
ах, Microsoft ... Наша первая попытка всегда должна быть закрыта и снова открыта (или выключена и включена) - несколько загадочных ошибок исчезнут, когда мы сделаем это ...
Леонардо Алвес Мачадо

1
Мне так стыдно, что это решение может решить мою проблему. Теперь я больше не могу выходить на улицу, чтобы встретиться с друзьями и семьей.
javaLover

2
У тебя была та же проблема, что и у Кэрол.
amod

10

Также убедитесь, что у вас не включено: Свойства конфигурации -> C / C ++ -> Препроцессор -> Предварительная обработка в файл .


В моем случае это тоже была проблема, но что мне делать, если я действительно хочу включить этот флаг (чтобы просмотреть файл Prepossessment)?
Guy Avraham

2
У вас есть обходные пути: как вывести предварительно обработанный код и скомпилировать его (Visual Studio) и здесь: Компиляция проекта (VS 2008) с аргументом / p (предварительная обработка в файл) не компилируется . Но, по сути, это вариант компилятора, поэтому он подойдет либо, но не обоим сразу.
Assaf Levy

4

У меня была такая же проблема. Она вызывалась знаком "," в имени папки дополнительного пути к библиотеке. Решалась изменением пути к дополнительной библиотеке.


4

Моя проблема заключалась в отсутствии .libрасширения, я просто связывал его, mylibи VS решил его найти mylib.obj.


3

В моем случае речь шла о неверно направленной ссылке. Project ссылался на результат другого проекта, но последний не выводил файл, в котором искал первый.


3

Решение 1 (для моего случая): перезапустите процесс Windows Explorer (да, файловый менеджер Windows).

Решение 2:

  1. Закройте Visual Studio. Выход из Windows
  2. Войдите, снова откройте Visual Studio
  3. Стройте как обычно. Теперь он собирается и может получить доступ к проблемному файлу.

Я предполагаю, что иногда файловая система или тот, кто ее контролирует, теряются со своими разрешениями. Перед перезапуском сеанса Windows пытался убить msbuild32.exeпроцессы зомби , перезапустить визуальную студию, не проверять, даже показывая файл проблемы. Нет проблем с конфигурацией сборки. Это случается время от времени. Что-то внутреннее в Windows не исправляется, требуется перезагрузка.


У меня была эта проблема с VS2019 ... это исправило ... удивительно, что ошибки сохраняются. thx
JHBonarius

2

У меня была такая же ошибка, только с пакетом Nuget, который я установил (тот, который не является только заголовком), а затем попытался удалить.
Что было неправильно для меня, так это то, что я все еще включал заголовок для пакета, который я только что удалил, в одном из моих файлов .cpp (довольно глупо, да).
Я даже удалил ссылки на дополнительные каталоги библиотеки Project -> Properties -> Linker -> General, но, конечно, безрезультатно, поскольку я все еще пытался ссылаться на несуществующий заголовок.

Определенно сбивающее с толку сообщение об ошибке в этом случае, поскольку имя заголовка было, <boost/filesystem.hpp>но ошибка дала мне, "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"а номера строк или что-то еще.


2

У меня была такая же проблема, но решения для моего случая в ответах нет. Моя антивирусная программа (AVG) определила файл MyProg.exeкак вирус и поместила его в «хранилище вирусов». Вам нужно проверить это хранилище, и если файл там - то просто восстановите его. Мне это помогло.


1

Для проекта сборки (ProjectName -> Build Dependencies -> Build Customizations -> masm (selected)) установка параметра Generate Preprocessed Source Listing на True вызвала проблему и для меня, очистка настройки устранила ее. VS2013 здесь.


1

У меня та же проблема с компоновщиком, который жалуется на отсутствие основного исполняемого файла. Это произошло во время переноса нашего решения на новую Visual Studio 2013 . Решение представляет собой разнообразное сочетание управляемых и неуправляемых проектов / кода. Проблема (и решение) заключалась в отсутствии файла app.config в папке решения. Потребовался день, чтобы понять это :(, поскольку журнал вывода не очень помог.



0

Я отвечаю, потому что не вижу этого конкретного решения в списке других.

По-видимому, мой антивирус (Ad-Aware) отмечал DLL, от которой зависит один из моих проектов, и удалял ее. Даже после исключения каталога, в котором находится DLL, такое же поведение продолжалось до тех пор, пока я не перезагрузил свой компьютер.


0

В моем случае я заменил файлы математической библиотеки из предыдущего курса Game Engine Graphics на GLM. Проблема заключалась в том, что я не добавил их в проект в обозревателе решений Visual Studio (даже если они были в репозитории проекта).


0

У меня была эта проблема в сочетании с ошибкой LNK2038, и я следил за этим сообщением, чтобы разделить библиотеки DLL RELEASE и DEBUG. В этом процессе я очистил всю папку, в которой находились эти зависимости.

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

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


0

Я решил его добавление в существующий проект к моему решению , которое я забыл добавить в первый раз.


0

У меня была такая же ошибка:

fatal error LNK1104: cannot open file 'GTest.lib;'

Это было вызвано ;в конце. Если у вас несколько библиотек, их следует разделять пустым пространством (пробел), без запятой или точкой с запятой!

Так что не используйте ;или что-либо еще при перечислении библиотек вProject properties >> Configuration Properties >> Linker >> Input


0

Я пробовал вышеуказанное решение, но у меня не получилось. Поэтому я переименовал exe и перестроил решение. Меня устраивает.


0

У меня была эта точная ошибка при создании VC ++ DLL в Visual Studio 2019:

LNK1104: невозможно открыть файл 'C: \ Program.obj'

Оказалось, что в разделе «Свойства проекта»> «Компоновщик»> «Входные данные»> «Файл определения модуля» я указал файл def, в конце имени которого была заключена двойная кавычка . Удаление двойных кавычек без совпадений решило проблему.


0

Убили msbuild32.exeи построили снова. У меня это сработало.


-1

Я столкнулся с той же проблемой с «Visual Studio 2013».

LNK1104: cannot open file 'debug\****.exe

Это разрешилось после закрытия и повторного запуска Visual Studio.


-3

У меня была та же проблема, я только что скопировал код в новый проект и начал сборку. Начала приходить какая-то другая ошибка. ошибка C4996: 'fopen': эта функция или переменная может быть небезопасной. Вместо этого рассмотрите возможность использования fopen_s

Чтобы снова решить эту проблему, я добавил свое единственное свойство в проект Project, как показано ниже. Проект -> Свойства -> Свойство конфигурации -> c / c ++. В этой категории есть имя поля. Определения препроцессора. Я добавил _CRT_SECURE_NO_WARNINGS это, чтобы решить проблему. Надеюсь, это поможет ...

Спасибо


Этот ответ не имеет отношения к исходному посту.
zar

Не говоря уже о том, что отключение функций безопасности - не совсем хорошая идея,
Матти Вирккунен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.