Чому фатальна помилка "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.