Чому фатальна помилка "LNK1104: не вдається відкрити файл" C: \ Program.obj "", коли я компілюю проект C ++ у Visual Studio?


117

Я створив новий проект C ++ у Visual Studio 2008. Жодного коду ще не написано; Змінено лише налаштування проекту.

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

фатальна помилка LNK1104: не вдається відкрити файл 'C: \ Program.obj'

Відповіді:


153

Ця проблема викликана тим, що вказано залежність до файлу lib, який мав пробіли на своєму шляху. Шлях повинен бути оточений лапками, щоб проект склав правильно.

На Властивості конфігурації -> Linker -> Вкладка властивостей проекту є властивість Додаткові залежності . Цю проблему виправили, змінивши цю властивість із:

C: \ програмні файли \ програмне забезпечення sdk \ lib \ library.lib

До:

"C: \ програмні файли \ програмне забезпечення sdk \ lib \ library.lib"

Куди я додав цитати.


17
Боже, ти щойно повісив дводенну погоню за помилками на 30 секунд :)
— jb.

10
У мене була така ж проблема. Якщо ваш Linker правильний, але ваш каталог lib встановлений неправильно, може виникнути та сама помилка. Спробуйте переглянути у Властивості конфігурації -> Каталоги VC ++ -> Каталоги бібліотек, щоб побачити, чи правильно ви встановили бібліотеку. Іноді папка lib складається з папки x86 та x64. Ви повинні встановити його на одне з цих (залежно від вашого компілятора), а не на папку, що містить обидва.
— M4st3rM1nd

1
Не забудьте поставити крапку з комою після "C:\Program Files\sofware sdk\lib\library.lib". Відсутність ;заповіту також призведе до неправильного складання проекту.
— roscioli

1
Була ця проблема під час спроби побудови OpenCV за допомогою Visual Studio 2005 (для Windows 8.1) ... і це вирішило. Чудово!
— AlainD

1
Я спробував це, і мені це не вийшло. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependitions) -Що я повинен переслідувати?
— СТФ

65

Це може статися, якщо файл все ще працює.

: -1: помилка: LNK1104: не вдається відкрити файл 'налагодження \ ****. Exe'


4
це була і моя проблема!
— Камран Бігделі

1
Я розумію, що це викликано засобами MS Security Essentials, які зберігають файл заблокованим.
— Synetech

так, закрив попереднє вікно консолі і раптом кришку можна було прочитати.
— Карі

15

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

Це було на VS 2013 Ultimate, Windows 8.1.


4
ах, Майкрософт ... Наша перша спроба завжди повинна бути близькою та знову відкритою (або вимкненою та увімкненою) - кілька таємничих помилок зникає, коли ми це робимо ...
— Леонардо Алвеш Мачадо

1
Мені так соромно, що це рішення може вирішити мою проблему. Тепер я більше не можу виходити на вулицю, щоб зустріти своїх друзів та родину.
— javaLover

2
У вас була така ж проблема, як у Керол.
— amod

10

Переконайтесь, що у вас це не ввімкнено: Властивості конфігурації -> C / C ++ -> Препроцесор -> Попередній процес у файлі .


У моєму випадку це також було проблемою, але що мені робити, якщо я хочу ввімкнути цей прапор (для того, щоб переглянути файл, що перебуває у власності)?
— Гай Аврахам

2
Тут у вас є деякі обхідні шляхи: як вивести попередньо оброблений код І скомпілювати його (Visual Studio), і ось тут: Компіляція проекту (VS 2008) з аргументом / p (попередній процес у файл) не компілюється . Але по суті це варіант компілятора, тому він буде робити і те, і не те і інше.
— Ассаф Леві

4

У мене була така ж проблема. Вона викликана символом "," у назві папки додаткового шляху бібліотеки. Її вирішили, змінивши додатковий шлях до бібліотеки.



3

У моєму випадку це було питання неправильно направленого посилання. Проект посилався на вихід іншого проекту, але останній не виводив файл там, де шукав перший.


3

Рішення 1 (в моєму випадку): перезапустити процес провідника Windows (так, менеджер файлів 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 -> Залежності побудови -> Настроювання налаштувань -> маска (вибрано)), встановлення Створення попередньо обробленого списку джерел на Істинне спричинило і для мене проблему, очистивши налаштування виправлене. VS2013 тут.


1

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


1

Я перевірив усі мої налаштування відповідно до цього списку: http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback . Це корисно для мене, і для моєї ситуації я з’ясовую, що залежність залежностей властивостей проектів має подвійне цитування, чого там не повинно бути.


0

Я відповідаю, бо не бачу цього конкретного рішення, перерахованого іншим.

Мабуть, мій антивірус (Ad-Aware) позначав DLL, від якого залежить мій проект, і його видалення. Навіть після виключення каталогу, де живе DLL, така ж поведінка тривала, поки я не перезапустив комп’ютер.


0

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


0

У мене виникла ця проблема в поєднанні з помилкою LNK2038, після цього допису я відокремив RELEASE та DEBUG DLL. У цьому процесі я очистив всю папку, де проживали ці залежності.

На щастя, у мене була резервна копія всіх цих файлів, і я отримав файл, для якого ця помилка перекидається назад у папку DEBUG для вирішення проблеми. Код помилки якимось чином вводив в оману, оскільки мені довелося витратити багато часу, щоб знову дійти до цієї підказки з одного з відповідей з цього повідомлення.

Сподіваюся, що ця відповідь допоможе комусь, хто потребує.


0

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


0

У мене була така ж помилка:

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

Це було викликано ;в кінці. Якщо у вас є кілька бібліотек, вони повинні бути розділені порожнім пробілом (пробіл), без коми і напівколонок!

Тому не використовуйте ;та нічого іншого при переліку бібліотек уProject properties >> Configuration Properties >> Linker >> Input


0

Я спробував вище рішення, але не працював для мене. Тож я перейменую exe і відновити рішення. Це працює для мене.


0

У мене була така точна помилка при складанні DLL VC ++ у Visual Studio 2019:

LNK1104: не вдається відкрити файл 'C: \ Program.obj'

Виявилося в розділі Властивості проекту> Linker> Input> File Definition File, я вказав файл def, який мав неперевершену подвійну лапочку в кінці імені файлу. Видалення неперевершеної подвійної цитати вирішило проблему.


0

Вбито msbuild32.exeі знову збудували. Це працювало для мене.


-1

Я потрапив у ту ж проблему з "Visual Studio 2013".

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

Це вирішено після закриття та перезапуску Visual studio.


-3

У мене була така ж проблема, я щойно скопіював код у новий проект і розпочав збірку. Почала надходити якась інша помилка. помилка C4996: 'fopen': Ця функція або змінна може бути небезпечною. Поміркуйте замість цього використовувати fopen_s

Щоб вирішити цю проблему ще раз, я додав моє одне властивість до проекту Project, як показано нижче. Проект -> Властивості -> Властивість конфігурації -> c / c ++. У цій категорії є ім'я поля Preprocessor Definitions Я додав _CRT_SECURE_NO_WARNINGS це для вирішення проблеми Сподіваюся, що це допоможе ...

Спасибі


Ця відповідь не має відношення до теоретичного поста.
— зар

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