I’ve created a new C++ project in Visual Studio 2008. No code has been written yet; Only project settings have been changed.
When I compile the project, I receive the following fatal error:
fatal error LNK1104: cannot open file ‘C:Program.obj’
asked Sep 25, 2008 at 14:29
Josh SklareJosh Sklare
4,0043 gold badges23 silver badges17 bronze badges
This particular issue is caused by specifying a dependency to a lib file that had spaces in its path. The path needs to be surrounded by quotes for the project to compile correctly.
On the Configuration Properties -> Linker -> Input tab of the project’s properties, there is an Additional Dependencies property. This issue was fixed by adding the quotes. For example, changing this property from:
C:Program Filessofware
sdkliblibrary.lib
To:
«C:Program Filessofware
sdkliblibrary.lib»
where I added the quotes.
Amin Ya
1,4421 gold badge19 silver badges29 bronze badges
answered Sep 25, 2008 at 14:33
Josh SklareJosh Sklare
4,0043 gold badges23 silver badges17 bronze badges
11
This can happen if the file is still running as well.
:-1: error: LNK1104: cannot open file ‘debug****.exe’
answered Aug 13, 2014 at 16:10
CarolCarol
1,84326 silver badges29 bronze badges
5
The problem went away for me after closing and re-opening Visual Studio. Not sure why the problem happened, but that might be worth a shot.
This was on VS 2013 Ultimate, Windows 8.1.
answered Feb 4, 2015 at 17:07
Daniel NeelDaniel Neel
1,18713 silver badges28 bronze badges
3
Check also that you don’t have this turned on: Configuration Properties -> C/C++ -> Preprocessor -> Preprocess to a File.
answered Dec 26, 2015 at 19:11
Assaf LevyAssaf Levy
1,3121 gold badge12 silver badges20 bronze badges
2
My problem was a missing .lib
extension, I was just linking against mylib
and VS decided to look for mylib.obj
.
answered Dec 22, 2015 at 9:51
I had the same problem.It caused by a «,» in the name of a folder of additional library path.It solved by changing the additional library path.
answered Sep 26, 2013 at 5:20
harsiniharsini
3262 silver badges13 bronze badges
Solution 1 (for my case): restart windows Explorer process (yes, the windows file manager).
Solution 2:
- Close Visual Studio. Windows Logoff
- Logon, reopen Visual Studio
- Build as usual. It now builds and can access the problematic file.
I presume sometimes the file system or whoever is controlling it gets lost with its permissions. Before restarting the windows session, tried to kill zombie msbuild32.exe
processes, restart visual studio, check none even showing the problem file on. No build configuration issues. It happens now and then. Some internal thing in Windows does not fix up, needs a restart.
answered Dec 30, 2016 at 9:27
1
In my case it was a matter of a mis-directed reference. Project referenced the output of another project but the latter did not output the file where the former was looking for.
answered Aug 13, 2014 at 19:54
NewtopianNewtopian
7,4834 gold badges48 silver badges71 bronze badges
I had the same problem, but solution for my case is not listed in answers.
My antivirus program (AVG) determined file MyProg.exe
as a virus and put it into the ‘virus storehouse’. You need to check this storehouse and if file is there — then just restore it. It helped me out.
answered Jun 7, 2016 at 6:16
1
I had the same error, just with a Nuget package i had installed (one that is not header only) and then tried to uninstall.
What was wrong for me was that i was still including a header for the package i just uninstalled in one of my .cpp files (pretty silly, yes).
I even removed the additional library directories link to it in Project -> Properties -> Linker -> General
, but of course to no avail since i was still trying to reference the non-existent header.
Definitely a confusing error message in this case, since the header name was <boost/filesystem.hpp>
but the error gave me "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"
and no line numbers or anything.
answered Jan 19, 2016 at 11:22
MatthiasMatthias
2,9802 gold badges22 silver badges38 bronze badges
in my case it was the path lenght (incl. file name).
..............SWXBinaryVS2008OutputWin32Debugboost_unit_test_framework-vc90-mt-gd-1_57.lib;
as for the release the path was (this has worked correctly):
..............SWXBinaryVS2008OutputWin32Releaseboost_unit_test_framework-vc90-mt-1_57.lib;
==> one char shorter.
- i have also verified this by renaming the lib file (using shorter name) and changing this in the
Linker -> input -> additoinal dependencies
- i have also verified this by adding absolut path instead of relative path as all those «..» has extended the path string, too. this has also worked.
so the problem for me was the total size of the path + filename string was too long!
answered Dec 8, 2020 at 9:09
1
I had a similar problem. I solved it with the following command to kill the running task:
taskkill /f /im [nameOfExe]
/f: Forces the task to close.
/im: The next parameter is a image name aka executable name e.g. Program.exe.
answered Sep 13, 2021 at 11:44
MarciMarci
3025 silver badges12 bronze badges
For an assembly project (ProjectName -> Build Dependencies -> Build Customizations -> masm (selected)), setting Generate Preprocessed Source Listing to True caused the problem for me too, clearing the setting fixed it. VS2013 here.
answered Nov 16, 2014 at 0:26
MadeOfAirMadeOfAir
2,9335 gold badges31 silver badges39 bronze badges
I run into the same problem with linker complaining about the main executable missing. This happened during our solution port to the new Visual Studio 2013. The solution is a varied mix of managed and un-managed projects/code. The problem (and fix) ended up being a missing app.config file in the solution folder. Took a day to figure this one out :(, as output log was not very helpful.
answered Dec 4, 2014 at 21:58
Nicko PoNicko Po
7275 silver badges21 bronze badges
I checked all my settings according to this list: http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback . It is helpful to me and for my situation, I find out that Link Dependency of projects’ properties has double-quote, which should not be there.
answered Dec 19, 2014 at 16:07
DavidDavid
1,64617 silver badges22 bronze badges
I’m answering because I don’t see this particular solution listed by anyone else.
Apparently my antivirus (Ad-Aware) was flagging a DLL one of my projects depends on, and deleting it. Even after excluding the directory where the DLL lives, the same behaviour continued until I restarted my computer.
answered Nov 23, 2015 at 1:13
easutereasuter
1,16714 silver badges20 bronze badges
In my case, I had replaced math library files from a previous Game Engine Graphics course with GLM. The problem was that I didn’t add them to the project within Visual Studio’s Solution Explorer (even though they were in the project repository).
answered Feb 4, 2017 at 23:51
I had this issue in conjunction with the LNK2038 error, followed this post to segregate the RELEASE and the DEBUG DLLs. In this process I had cleaned up the whole folder where these dependencies were residing.
Luckily I had a backup of all these files, and got the file for which this error was throwing back into the DEBUG folder to resolve the issue. The error code was misleading in some way as I had to spend a lot of time to come to this tip from one of the answers from this post again.
Hope this answer, helps someone in need.
answered Feb 7, 2017 at 4:56
N00b Pr0grammerN00b Pr0grammer
4,4555 gold badges31 silver badges45 bronze badges
I solved it by adding an existing project to my solution, which I forgot to add in the first time.
answered May 31, 2017 at 18:20
Markus WeberMarkus Weber
1,04911 silver badges24 bronze badges
I had the same error:
fatal error LNK1104: cannot open file 'GTest.lib;'
This was caused by the ;
at the end. If you have multiple libraries, they should be separated by empty space (spacebar), no comma or semi-colons!
So don’t use ;
or any anything else when listing libraries in Project properties >> Configuration Properties >> Linker >> Input
answered Oct 25, 2017 at 18:31
zarzar
11.2k13 gold badges92 silver badges176 bronze badges
I tried above solution but didnt work for me.
So i rename the exe and rebuild the solution.
It works for me.
answered Nov 20, 2019 at 6:20
I had this exact error when building a VC++ DLL in Visual Studio 2019:
LNK1104: cannot open file ‘C:Program.obj’
Turned out under project Properties > Linker > Input > Module Definition File, I had specified a def file that had an unmatched double-quote at the end of the filename. Deleting the unmatched double quote resolved the issue.
answered Dec 12, 2019 at 22:14
MikeOnlineMikeOnline
95411 silver badges18 bronze badges
Killed msbuild32.exe
and built again. It worked for me.
answered Jul 16, 2020 at 11:09
ImadImad
7,09211 gold badges54 silver badges110 bronze badges
My issue was caused by other application using the .dll file I was trying to debug.
Closing the application that was using the .dll solved it for me.
answered Sep 13, 2020 at 1:32
NAGANAGA
133 bronze badges
Possible solutions:
-
Check if path contain any white spaces, Go to Properties > Linker > Input > additional path and include «path with white space»
-
If program are still running, close everything and restart.
-
Check if .obj file is not created. This happens when you directly build a project while Properties > C++ > Preprocessor > Generate preprocessor file is on. Turn it off and build the project then you can onn Properties > C++ > Preprocessor > Generate preprocessor file.
answered May 30, 2021 at 19:09
I hit the same problem with «Visual Studio 2013».
LNK1104: cannot open file 'debug****.exe
It resolved after closing and re-starting Visual studio.
answered Nov 14, 2018 at 5:25
user3860869user3860869
1211 gold badge1 silver badge6 bronze badges
I was having the same problem , I have just copied the code to new project and started the build .
Some other error started coming.
error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead
To solve this problem again, I have added my one property in the Project project as below.
Project -> Properties -> Configuration property -> c/c++ .
In this category there is field name Preprocessor Definitions
I have added _CRT_SECURE_NO_WARNINGS this to solve the problem
Hope it will help …
Thank You
answered Sep 14, 2017 at 10:19
SunilSunil
31 bronze badge
2
Согласно техническому заданию, необходимо реализовать часть приложения на C++. Задействовал нужные WinAPI, запустил проект в режиме отладки, нашел несколько ошибок, которые исправил. Теперь пытаюсь заново откомпилировать, собрать и запустить проект, а в
ответ получаю: «Ошибка 1 error LNK1104: не удается открыть файл «C:UsersMaximysDocumentsVisual Studio 2010ProjectsWin32DebugWin32.exe» C:UsersMaximysDocumentsVisual Studio 2010ProjectsWin32Win32LINK
Win32″. Читаю спецификацию и причины данной ошибки на MSDN(тут):
1)недостаточно памяти на диске — точно не то, т.к. на диске C еще около 50-70Гбайт;
2)файл не существует — тоже не то, файл Win32.exe лежит в нужной папке Debug;
3)При указании библиотек в диалоговом окне страниц свойств проекта имена библиотек следует разделять пробелами (а не запятыми) — сам ни одну библиотеку не подключал, так что снова не то;
4-5 пункт являются полным бредом по отношению к моей машине
6)Недостаточные файловые разрешения — снова не то — являюсь Администратором компьютера;
…
10)Файл мог быть открыт другой программой, и компоновщик не может вести запись в этот файл — открываем Диспетчер задач и смотрим, вдруг все формы проекта закрыли, а процесс не умер(у меня иногда такое с WPF-приложениями случается), хотя такого быть и не
должно, но нет — процессов с таким именем нет;
11)и т.д.
Т.е. никаких объективных причин для возникновения данной ошибки нет! Ладно, решил посмотреть что по этому поводу говорят на русскоязычных форумах — там вообще о таких ошибках не слышали; смотрю англоязычные — у одного человека еще год назад появилась такая
же проблема, он обратился на форум(адрес не вспомню), где ему дали сто двадцать два совета(народ тыкал пальцем в небо), которые так и не помогли(обычно англичане пишут(пер. с анг.):»Спасибо тебе, помогло»(даже откройте англоязычный MSDN), а тут нет ни
слова).
Сам нашел всего одну, но коренную методику борьбы с данной проблемы — «Reboot»(Перезагрузка), но каждые 10-15 минут перезагружаться — Вы меня простите, тут никакого времени не хватит.
Как побороть данную ошибку и с чем она может быть в действительности связана?
P.S.У файла «Win32.exe» атрибут «Только для чтения» не установлен, если что
-
Изменено
5 марта 2012 г. 10:56
Я создал новый проект C++ в Visual Studio 2008. Код еще не написан, изменены только настройки проекта.
когда я компилирую проект, я получаю следующую фатальную ошибку:
фатальная ошибка LNK1104: не удается открыть файл ‘C:Program.obj’
2855
19
19 ответов:
эта конкретная проблема вызвана указанием зависимости для файла lib, который имел пробелы в своем пути. Путь должен быть окружен кавычками для правильной компиляции проекта.
на Свойства Конфигурации -> Компоновщик -> Ввод вкладка свойств проекта, есть Дополнительные Зависимости собственность. Эта проблема была исправлена путем изменения этого свойства:
C:Program файлыпрограммное обеспечение
sdklib библиотека.ЛибTo:
» C:Program файлыпрограммное обеспечение
sdklib библиотека.lib»где я добавил кавычки.
Это может произойти, если файл все еще работает.
:-1: ошибка: LNK1104: не удается открыть файл ‘ debug****.exe’
проблема ушла для меня после закрытия и повторного открытия Visual Studio. Не знаю, почему возникла проблема, но это может быть стоит попробовать.
Это было на VS 2013 Ultimate, Windows 8.1.
проверьте также, что вы не включили это: свойства конфигурации -> C / C++ — > препроцессор -> предварительная обработка файла.
У меня было то же самое problem.It вызвано символом», » в имени папки дополнительной библиотеки path.It решается путем изменения дополнительного пути к библиотеке.
моя проблема была отсутствует
.lib
расширение, я просто связывал противmylib
и ВС решил искатьmylib.obj
.
в моем случае это был вопрос неправильной ссылки. Проект ссылался на вывод другого проекта, но последний не выводил файл, где первый искал.
для сборки проекта (название проекта -> построение зависимостей -> сборки настройки -> компилятор MASM (некоторые)), задание Создать Предварительно Обработанный Список Источников до True вызвал проблему и для меня, очистив настройку, исправил ее. VS2013 здесь.
Я сталкиваюсь с той же проблемой, когда компоновщик жалуется на отсутствие основного исполняемого файла. Это произошло во время нашего порта решения для нового Visual Studio 2013. Решение представляет собой разнообразное сочетание управляемых и неуправляемых проектов / кода. Проблема (и исправить) в конечном итоге отсутствует приложение.конфигурации файл в папке решения. Потребовался день, чтобы понять это: (, поскольку выходной журнал был не очень полезен.
у меня была та же ошибка, только с пакетом Nuget, который я установил (тот, который не является только заголовком), а затем попытался удалить.
Что было неправильно для меня, так это то, что я все еще включал заголовок для пакета, который я только что удалил в одном из моих .cpp файлы (довольно глупо, да).
Я даже удалил дополнительную ссылку на каталоги библиотеки вProject -> Properties -> Linker -> General
, но, конечно, безрезультатно, так как я все еще пытался ссылаться на несуществующий заголовок.определенно сбивает с толку сообщение об ошибке в этом случае, так как имя заголовка
<boost/filesystem.hpp>
но ошибка дала мне"cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"
и никаких номеров строк или чего-то еще.
Я отвечаю, потому что я не вижу это конкретное решение, перечисленное кем-либо еще.
по-видимому, мой антивирус (Ad-Aware) отмечал DLL, от которой зависит один из моих проектов, и удалял его. Даже после исключения каталога, где живет DLL, то же самое поведение продолжалось до тех пор, пока я не перезагрузил компьютер.
У меня была та же проблема, но решение для моего случая не указано в ответах.
Моя антивирусная программа (AVG) определила файлMyProg.exe
как вирус и положить его в «хранилище вирусов». Вам нужно проверить этот склад, и если файл есть — то просто восстановить его. Это меня выручило.
Решение 1 (для моего случая): перезапустите процесс Проводника windows (да, диспетчер файлов windows).
решение 2:
- Закрыть Visual Studio. Выход Из Системы Windows
- вход в систему, откройте Visual Studio
- построить как обычно. Теперь он строит и может получить доступ к проблемному файлу.
Я предполагаю, что иногда файловая система или тот, кто ее контролирует, теряется с ее разрешениями. Перед перезапуском сеанса windows, пытался убить зомби
msbuild32.exe
процессы, перезагрузите visual studio, не проверяйте даже отображение файла проблемы. Нет проблем с конфигурацией сборки. Это случается время от времени. Некоторые внутренние вещи в Windows не исправляются,требуется перезагрузка.
в моем случае Я заменил файлы математической библиотеки из предыдущего графического курса игрового движка на GLM. Проблема заключалась в том, что я не добавил их в проект в обозревателе решений Visual Studio (даже если они были в репозитории проекта).
У меня была эта проблема в сочетании с ошибкой LNK2038, а затем это post для разделения библиотеки DLL выпуска и отладки. В этом процессе я очистил всю папку, в которой находились эти зависимости.
к счастью, у меня была резервная копия всех этих файлов, и я получил файл, для которого эта ошибка отбрасывала обратно в папку отладки, чтобы решить проблему. Код ошибки вводил в заблуждение каким-то образом, поскольку мне пришлось потратить много времени, чтобы прийти к этому совету от одного из ответов с этого поста снова.
надеюсь, что этот ответ, помогает кому-то в нужде.
Я решил это с помощью добавлять an существующий проектto мой решение, который я забыл добавить в первый раз.
у меня была та же ошибка:
fatal error LNK1104: cannot open file 'GTest.lib;'
Это было вызвано
;
в конце. Если у вас есть несколько библиотек, они должны быть разделены пустым пространством (пробел), без запятой или точки с запятой!Так что не используйте
;
или что-нибудь еще при перечислении библиотек в свойства проекта > > свойства конфигурации > > Компоновщик > > ввод
У меня была такая же проблема , я просто скопировал код в новый проект и начали строить .
Некоторые другие ошибки начали приходить.
ошибка C4996:’ fopen’: эта функция или переменная может быть небезопасной. Рассмотрите возможность использования fopen_s вместоснова решить эту проблему, я добавил свое одно свойство в проект, как показано ниже.
Проект — > свойства — > свойство конфигурации — > c/c++ .
В этой категории есть поле Имя препроцессора определения
Я добавил _CRT_SECURE_NO_WARNINGS это для решения проблемы
Надеюсь, это поможет …Спасибо
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
1 |
|
27.08.2012, 11:06. Показов 20290. Ответов 63
Доброго времени суток. Пишу программу с DirectX и столкнулся с проблемой: код нормально компилируется, но после вылезает ошибка
0 |
4982 / 3089 / 456 Регистрация: 10.11.2010 Сообщений: 11,165 Записей в блоге: 10 |
|
27.08.2012, 11:17 |
2 |
Писать надо так:
#pragma comment( lib, «d3dx9.lib» )
0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
27.08.2012, 11:20 [ТС] |
3 |
Писать надо так: Это я в сообщении по привычке .h поставил. В проекте ровно так, как вы указали. Так что проблема не в этом.
0 |
Делаю внезапно и красиво 1313 / 1228 / 72 Регистрация: 22.03.2011 Сообщений: 3,744 |
|
31.08.2012, 18:29 |
4 |
Пути к библиотеке прописал. Пути к библиотеке прописал ГДЕ? (это я тебе наводящий вопрос задаю)
0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
31.08.2012, 18:43 [ТС] |
5 |
Пути к библиотеке прописал ГДЕ? (это я тебе наводящий вопрос задаю) В свойствах проекта, C++, дополнительные каталоги включения. кст на d3d9.lib, подключенный таким же образом, компиллятор не ругается
0 |
Делаю внезапно и красиво 1313 / 1228 / 72 Регистрация: 22.03.2011 Сообщений: 3,744 |
|
31.08.2012, 19:18 |
6 |
А надо в настройки компоновщика пути до либов прописать, а не только до хэдэров в настройках компилятора.
0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
31.08.2012, 19:43 [ТС] |
7 |
Т.е. зайти в свойства -> свойства конфигурации -> компоновщик, а дальше смотреть -> ввод -> дополнительные зависимости? или как? если вы имеете ввиду первый вариант, то я его уже пробовал, не вышло. и ругается он конкретно на d3dx9.lib, а d3d9.lib подключает без вопросов.
0 |
556 / 510 / 25 Регистрация: 23.07.2009 Сообщений: 2,359 Записей в блоге: 1 |
|
31.08.2012, 20:00 |
8 |
ругается он конкретно на d3dx9.lib, а d3d9.lib подключает без вопросов. это как? как видно, что «без вопросов»?
0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
31.08.2012, 20:06 [ТС] |
9 |
это как? как видно, что «без вопросов»? У меня есть функция инициализации Direct3D для которой нужен d3d9.lib и эта функция компилируется нормально, без ошибок. А все, что связано с d3dx9.lib не работает и компилятор выдает LNK1104. Если убрать pragma comment, то выдает ошибку на неразрешенный внешний символ, т.е. нашел прототип функции, но не нашел определение
0 |
556 / 510 / 25 Регистрация: 23.07.2009 Сообщений: 2,359 Записей в блоге: 1 |
|
31.08.2012, 20:50 |
10 |
А все, что связано с d3dx9.lib не работает и компилятор выдает LNK1104. почему компилятор? эту ошибку выдает линкер.
0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
31.08.2012, 20:54 [ТС] |
11 |
почему компилятор? эту ошибку выдает линкер. Ваша правда. Извиняюсь.
0 |
4982 / 3089 / 456 Регистрация: 10.11.2010 Сообщений: 11,165 Записей в блоге: 10 |
|
31.08.2012, 21:01 |
12 |
Ну тогда показывай скрины и код.
0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
31.08.2012, 21:11 [ТС] |
13 |
Ну тогда показывай скрины и код. Ошибка не в коде, иначе бы не было LNK1104, проблема в том, что линкер не видит в упор d3dx9.lib
0 |
4982 / 3089 / 456 Регистрация: 10.11.2010 Сообщений: 11,165 Записей в блоге: 10 |
|
31.08.2012, 21:21 |
14 |
Ошибка не в коде, иначе бы не было LNK1104, проблема в том, что линкер не видит в упор d3dx9.lib Всякое бывает. Люди иногда сами говорят что в проблема в том-то.., а оказывается она совсем в другом.
0 |
556 / 510 / 25 Регистрация: 23.07.2009 Сообщений: 2,359 Записей в блоге: 1 |
|
01.09.2012, 01:42 |
15 |
линкер не может найти эту библиотеку. раскопируй ее во все директории, «вокруг твоего проекта». только не сразу, а сперва на уровень выше — попробовал, на уровень ниже — попробовал. и т.д. в конце-концов он ее найдет. тогда и поймешь, где он ищет (читать и разбираться ведь некогда? значит, нужно запастись терпением: два дня работы в поле могут сэкономить два часа в библиотеке или в лаборатории). или, если ты на диске c: работаешь, скопируй ее в корень и укажи c:d3dx9.lib. сходу найдет и присобачит.
0 |
4982 / 3089 / 456 Регистрация: 10.11.2010 Сообщений: 11,165 Записей в блоге: 10 |
|
01.09.2012, 01:48 |
16 |
novi4ok, это плохой вариант. ТС давно бы решил проблему если бы делал так, как ему советуют. Думаю он просто где-то напутал. Показал бы скрины, код, и я думаю все сразу бы встало на свои места.
0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
01.09.2012, 05:58 [ТС] |
17 |
Я свои функции построил по примеру из книги Фленова, и с другими книгами сверялся. А также смотрел MSDN ну нет ошибки в коде, НЕТУ. Вы мне лучше подскажите, почему линкер видит d3d9.lib, а d3dx9.lib, расположенный в той же папке и следующий почти сразу после d3d9.lib, не видит. А про корень C: еще посмотрю
0 |
Делаю внезапно и красиво 1313 / 1228 / 72 Регистрация: 22.03.2011 Сообщений: 3,744 |
|
01.09.2012, 07:08 |
18 |
2 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
01.09.2012, 07:31 [ТС] |
19 |
ура! заработало спс Deviaphan это реально помогло. А почему в книге про это не упоминается даже, хотя она под VC++ написана??? Добавлено через 3 минуты Не по теме: теперь смогу дальше двигаться, мне DirectX нужен чтобы нарисовать график функции 2-х пременных
0 |
Делаю внезапно и красиво 1313 / 1228 / 72 Регистрация: 22.03.2011 Сообщений: 3,744 |
|
01.09.2012, 07:54 |
20 |
А почему Потому что подразумевается, что программист уже в достаточной степени знаком с компилятором. То, что там написано «с нуля» или «для чайников» это исключительно маркетинговый ход.
0 |
Содержание
- Ошибка средств компоновщика LNK1104
- Не удается открыть приложение или PDB-файл
- Приложение запущено или загружено в отладчик.
- Ваше приложение заблокировано антивирусной проверкой
- Не удается открыть файл библиотеки Майкрософт
- Библиотеки Windows, такие как kernel32.lib
- Библиотеки vcruntime с версиями
- Библиотеки для розничной торговли, отладки или платформы
- Библиотека vccorlib.lib
- Библиотеки в проектах из интернета или других источников
- Обновленные библиотеки Windows SDK
- Не удается открыть сторонний файл библиотеки
- Не удается открыть файл, созданный проектом
- Не удается открыть файл C:Program.obj
- Другие распространенные проблемы
- Проблемы с путем или именем файла
- Параллельная синхронизация сборки
- Дополнительные зависимости, указанные в интегрированной среде разработки
- Слишком длинные пути
- Слишком большие файлы
- Неправильные разрешения на файл
- Недостаточно места на диске
- Проблемы в переменной среды TMP
- Помощь, моя проблема не указана здесь!
- Почему фатальная ошибка » LNK1104: не удается открыть файл ‘C:Program.obj ‘» возникают при компиляции проекта C++ в Visual Studio?
- 19 ответов:
Ошибка средств компоновщика LNK1104
Эта ошибка возникает, когда компоновщику не удается открыть файл для чтения или записи. Ниже перечислены две наиболее распространенные причины проблемы.
программа уже запущена или загружена в отладчик и
пути к библиотеке неверны или не заключены в двойные кавычки.
Эта ошибка может быть вызвана многими другими возможными причинами. Чтобы сузить их, сначала проверьте, какой тип файла имеет имя файла . Затем используйте следующие разделы, чтобы определить и устранить конкретную проблему.
Не удается открыть приложение или PDB-файл
Приложение запущено или загружено в отладчик.
Если имя файла — это имя исполняемого файла или связанный PDB-файл, проверьте, запущено ли приложение. Затем проверьте, загружена ли она в отладчик. Чтобы устранить эту проблему, остановите программу и выгрузите ее из отладчика перед повторной сборкой. Если приложение открыто в другой программе, например редактор ресурсов, закройте его. Если программа не отвечает, может потребоваться использовать диспетчер задач для завершения процесса. Кроме того, может потребоваться закрыть и перезапустить Visual Studio.
Ваше приложение заблокировано антивирусной проверкой
Антивирусные программы часто временно блокируют доступ к вновь созданным файлам, особенно .exe и .dll исполняемым файлам. Чтобы устранить эту проблему, попробуйте исключить каталоги сборки проекта из антивирусного сканера.
Не удается открыть файл библиотеки Майкрософт
Библиотеки Windows, такие как kernel32.lib
Если файл, который не удается открыть, является одним из файлов стандартной библиотеки, предоставляемых корпорацией Майкрософт, например kernel32.lib, может возникнуть ошибка конфигурации проекта или ошибка установки. Убедитесь, что пакет WINDOWS SDK установлен. Если для проекта требуются другие библиотеки Майкрософт, такие как MFC, убедитесь, что компоненты MFC также установлены установщиком Visual Studio. Установщик можно запустить еще раз, чтобы добавить дополнительные компоненты в любое время. Дополнительные сведения см. в Изменение Visual Studio. Используйте вкладку «Отдельные компоненты » в установщике, чтобы выбрать определенные библиотеки и пакеты SDK.
Библиотеки vcruntime с версиями
Если сообщение об ошибке содержит версию библиотеки Майкрософт, например msvcr120.lib, набор инструментов платформы для этой версии компилятора может быть не установлен. Чтобы устранить эту проблему, у вас есть два варианта: обновить проект, чтобы использовать текущий набор инструментов платформы, или установить старый набор инструментов и выполнить сборку проекта без изменений. Дополнительные сведения см. в разделе «Обновление проектов с более ранних версий Visual C++ и использование собственного многонацеливания в Visual Studio для сборки старых проектов».
Библиотеки для розничной торговли, отладки или платформы
Эта ошибка может возникнуть при первой сборке для новой целевой платформы или конфигурации, например розничной торговли или ARM64. Убедитесь, что в интегрированной среде разработки установлены набор инструментов платформы и версия windows SDK , указанные на странице свойств «Общие «. Также убедитесь, что необходимые библиотеки доступны в каталогах библиотек, указанных на странице свойств каталогов VC++. Проверьте свойства каждой конфигурации, такие как отладка, розничная торговля, x86 или ARM64. Если одна сборка работает, но другая нет, сравните параметры для обоих. Установите все отсутствующие необходимые средства и библиотеки.
Библиотека vccorlib.lib
Для приложений или компонентов универсальной платформы Windows (UWP) нет библиотек, смягчаемых spectre. Если сообщение об ошибке содержит vccorlib.lib, возможно, вы включили /Qspectre в проекте UWP. Отключите параметр компилятора /Qspectre , чтобы устранить эту проблему. В Visual Studio измените свойство «Устранение рисков Spectre «. Он находится на странице создания кодаC/C++> диалогового окна страниц свойств проекта.
Библиотеки в проектах из интернета или других источников
При сборке проекта, скопированного с другого компьютера, расположения установки библиотеки могут отличаться. Для сборок командной строки убедитесь, что переменная среды LIB и пути библиотеки заданы правильно для сборки. В Visual Studio можно просматривать и изменять текущие пути библиотеки, заданные на страницах свойств проекта. На странице каталогов VC++ выберите раскрывающийся список для свойства «Каталоги библиотеки «, а затем нажмите кнопку «Изменить«. В разделе «Оцененное значение » диалогового окна «Каталоги библиотеки » перечислены текущие пути, которые искали файлы библиотеки. Обновите эти пути, чтобы они указывали на локальные библиотеки.
Обновленные библиотеки Windows SDK
Эта ошибка может возникать, если путь Visual Studio к Пакету SDK для Windows устарел. Это может произойти, если вы устанавливаете более новый пакет SDK для Windows независимо от установщика Visual Studio. Чтобы исправить его в интегрированной среде разработки, обновите пути, указанные на странице свойств каталогов VC++. Задайте версию в пути, чтобы она соответствовала новому пакету SDK. Если вы используете командную строку разработчика, обновите пакетный файл, который инициализирует переменные среды новыми путями пакета SDK. Эту проблему можно избежать с помощью установщика Visual Studio для установки обновленных пакетов SDK.
Не удается открыть сторонний файл библиотеки
Эта проблема связана с несколькими распространенными причинами.
Путь к файлу библиотеки может быть неправильным или не заключен в двойные кавычки. Или, возможно, вы не указали его компоновщику.
Возможно, вы установили 32-разрядную версию библиотеки, но вы создаете для 64-разрядных или наоборот.
Библиотека может иметь зависимости от других библиотек, которые не установлены.
Чтобы устранить проблему пути для сборок из командной строки, убедитесь, что задана переменная среды LIB. Убедитесь, что он содержит пути для всех используемых библиотек и для каждой сборки конфигурации. В интегрированной среде разработки пути библиотеки задаются свойствомкаталогов>библиотеки VC++. Убедитесь, что все каталоги, содержащие необходимые библиотеки, перечислены здесь для каждой сборки конфигурации.
Возможно, потребуется указать каталог библиотеки, который переопределяет каталог стандартной библиотеки. В командной строке используйте параметр /LIBPATH . В интегрированной среде разработки используйте свойство «Дополнительные каталоги библиотек» на странице свойств компоновщика > конфигурации > общего свойства проекта.
Убедитесь, что установлены все версии библиотеки, необходимые для конфигураций, которые вы создаете. Рассмотрите возможность использования служебной программы управления пакетами vcpkg для автоматизации установки и установки для многих общих библиотек. Когда это возможно, лучше создавать собственные копии сторонних библиотек. После этого вы уверены, что все локальные зависимости библиотек созданы для тех же конфигураций, что и проект.
Не удается открыть файл, созданный проектом
Эта ошибка может появиться, если имя файла еще не существует, когда компоновщик пытается получить к нему доступ. Это может произойти, если один проект зависит от другого в решении, но проекты создаются в неправильном порядке. Чтобы устранить эту проблему, убедитесь, что ссылки на проекты заданы в проекте, который использует файл. Затем отсутствующий файл будет создан до его необходимости. Дополнительные сведения см. в статье «Добавление ссылок в проектах Visual Studio C++ и управление ссылками в проекте».
Не удается открыть файл C:Program.obj
Если в сообщении об ошибке отображается имя файла C:Program.obj , заключите пути библиотеки в двойные кавычки. Эта ошибка возникает, когда несмеченный путь, начинающийся с C:Program Files , передается компоновщику. Несмеченные пути также могут привести к аналогичным ошибкам. Как правило, они отображают непредвиденный OBJ-файл в корне диска.
Чтобы устранить эту проблему для сборок из командной строки, проверьте параметры параметра /LIBPATH . Также проверьте пути, указанные в переменной среды LIB, и пути, указанные в командной строке. Обязательно используйте двойные кавычки для всех путей, включающих пробелы.
Чтобы устранить эту проблему в интегрированной среде разработки, добавьте двойные кавычки при необходимости в следующие свойства проекта:
Свойство «Каталоги библиотеки » на странице свойств каталогов VC++ «Свойства > конфигурации» ,
Свойство «Дополнительные каталоги библиотек» на странице свойств компоновщика > конфигурации > «Общие свойства»
Свойство Additional Dependencies (Дополнительные зависимости) на странице входных данных компоновщика свойств компоновщика > конфигурации>.
Другие распространенные проблемы
Проблемы с путем или именем файла
Эта ошибка может возникать, если имя файла библиотеки или путь, указанный компоновщику, неправильный. Или, если путь содержит недопустимую спецификацию диска. Просмотрите командную строку или в любой директиве #pragma comment( lib, «library_name» ) для проблем. Проверьте орфографию и расширение файла и убедитесь, что файл существует в указанном расположении.
Параллельная синхронизация сборки
Если вы используете параметр параллельной сборки, Visual Studio, возможно, заблокировали файл в другом потоке. Чтобы устранить эту проблему, убедитесь, что один и тот же объект кода или библиотека не встроены в несколько проектов. Используйте зависимости сборки или ссылки на проекты для получения встроенных двоичных файлов в проекте.
Дополнительные зависимости, указанные в интегрированной среде разработки
При указании отдельных библиотек непосредственно в свойстве «Дополнительные зависимости» используйте пробелы для разделения имен библиотек. Не используйте запятые или точки с запятой. Если вы используете пункт меню «Изменить «, чтобы открыть диалоговое окно «Дополнительные зависимости» , используйте новые строки, чтобы разделить имена, а не запятые, точки с запятой или пробелы. Также используйте новые линии при указании путей к библиотеке в диалоговых окнах каталогов библиотек и дополнительных каталогов библиотек .
Слишком длинные пути
Эта ошибка может появиться, когда путь к имени файла расширяется до более чем 260 символов. При необходимости измените структуру каталога или сократите имена папок и файлов, чтобы сократить пути.
Слишком большие файлы
Эта ошибка может возникнуть из-за слишком большого размера файла. Библиотеки или файлы объектов, превышающие размер гигабайта, могут вызвать проблемы для 32-разрядного компоновщика. Возможное исправление этой проблемы — использовать 64-разрядный набор инструментов. Дополнительные сведения об использовании 64-разрядного набора инструментов в командной строке см. в разделе «Практическое руководство. Включение 64-разрядного набора инструментов Visual C++ в командной строке». Сведения об использовании 64-разрядного набора инструментов в интегрированной среде разработки см. в статье «Использование MSBuild с 64-разрядным компилятором и инструментами». См. также эту запись Stack Overflow: как сделать Visual Studio использовать собственную цепочку инструментов amd64.
Неправильные разрешения на файл
Эта ошибка может возникнуть, если у вас недостаточно разрешений на доступ к имени файла. Это может произойти, если вы используете обычную учетную запись пользователя для доступа к файлам библиотек в защищенных системных каталогах. Или, если вы используете файлы, скопированные другими пользователями, которые по-прежнему имеют свои исходные разрешения. Чтобы устранить эту проблему, переместите файл в каталог проектов, доступный для записи. Если перемещаемый файл имеет недоступные разрешения, выполните команду takeown.exe в окне командной строки администратора, чтобы взять на себя владение файлом.
Недостаточно места на диске
Ошибка может возникать, если у вас недостаточно места на диске. Компоновщик использует временные файлы в нескольких ситуациях. Даже если у вас достаточно места на диске, большая ссылка может очертить или фрагментировать доступное место на диске. Рассмотрите возможность использования параметра /OPT (оптимизация); выполнение транзитивного исключения COMDAT считывает все файлы объектов несколько раз.
Проблемы в переменной среды TMP
Если имя файла называется LNKnnn, это имя файла, созданное компоновщиком для временного файла. Каталог, указанный в переменной среды TMP, может не существовать. Или для переменной среды TMP может быть указано несколько каталогов. Для переменной среды TMP следует указать только один путь к каталогу.
Помощь, моя проблема не указана здесь!
Если ни одна из перечисленных здесь проблем не возникает, вы можете использовать средства обратной связи в Visual Studio для получения справки. В интегрированной среде разработки перейдите в строку меню и выберите «Отправить > отзыв о > проблеме«. Кроме того, отправьте предложение с помощью справки > по отправке отзывов>. Вы также можете использовать сайт Microsoft Learn Q&A для вопросов и веб-сайт Visual Studio C++ Сообщество разработчиков. Используйте эти сайты для поиска ответов на вопросы и запроса справки. Дополнительные сведения см. в статье «Как сообщить о проблеме с набором инструментов или документацией visual C++».
Если вы обнаружили новый способ устранения этой проблемы, которую мы должны добавить в эту статью, сообщите нам об этом. Вы можете отправить нам отзыв с помощью кнопки ниже для этой страницы. Используйте его для создания новой проблемы в репозитории GitHub документации по C++. Спасибо!
Источник
Почему фатальная ошибка » LNK1104: не удается открыть файл ‘C:Program.obj ‘» возникают при компиляции проекта C++ в Visual Studio?
Я создал новый проект C++ в Visual Studio 2008. Код еще не написан, изменены только настройки проекта.
когда я компилирую проект, я получаю следующую фатальную ошибку:
фатальная ошибка LNK1104: не удается открыть файл ‘C:Program.obj’
19 ответов:
эта конкретная проблема вызвана указанием зависимости для файла lib, который имел пробелы в своем пути. Путь должен быть окружен кавычками для правильной компиляции проекта.
на Свойства Конфигурации -> Компоновщик -> Ввод вкладка свойств проекта, есть Дополнительные Зависимости собственность. Эта проблема была исправлена путем изменения этого свойства:
C:Program файлыпрограммное обеспечение sdklib библиотека.Либ
» C:Program файлыпрограммное обеспечение sdklib библиотека.lib»
где я добавил кавычки.
Это может произойти, если файл все еще работает.
:-1: ошибка: LNK1104: не удается открыть файл ‘ debug****.exe’
проблема ушла для меня после закрытия и повторного открытия Visual Studio. Не знаю, почему возникла проблема, но это может быть стоит попробовать.
Это было на VS 2013 Ultimate, Windows 8.1.
проверьте также, что вы не включили это: свойства конфигурации -> C / C++ — > препроцессор -> предварительная обработка файла.
У меня было то же самое problem.It вызвано символом», » в имени папки дополнительной библиотеки path.It решается путем изменения дополнительного пути к библиотеке.
моя проблема была отсутствует .lib расширение, я просто связывал против mylib и ВС решил искать mylib.obj .
в моем случае это был вопрос неправильной ссылки. Проект ссылался на вывод другого проекта, но последний не выводил файл, где первый искал.
для сборки проекта (название проекта -> построение зависимостей -> сборки настройки -> компилятор MASM (некоторые)), задание Создать Предварительно Обработанный Список Источников до True вызвал проблему и для меня, очистив настройку, исправил ее. VS2013 здесь.
Я сталкиваюсь с той же проблемой, когда компоновщик жалуется на отсутствие основного исполняемого файла. Это произошло во время нашего порта решения для нового Visual Studio 2013. Решение представляет собой разнообразное сочетание управляемых и неуправляемых проектов / кода. Проблема (и исправить) в конечном итоге отсутствует приложение.конфигурации файл в папке решения. Потребовался день, чтобы понять это: (, поскольку выходной журнал был не очень полезен.
Я проверил все мои настройки в соответствии с этим списком:http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback . Это полезно для меня и для моей ситуации, я узнаю, что ссылочная зависимость свойств проектов имеет двойную кавычку, которой не должно быть.
у меня была та же ошибка, только с пакетом Nuget, который я установил (тот, который не является только заголовком), а затем попытался удалить.
Что было неправильно для меня, так это то, что я все еще включал заголовок для пакета, который я только что удалил в одном из моих .cpp файлы (довольно глупо, да).
Я даже удалил дополнительную ссылку на каталоги библиотеки в Project -> Properties -> Linker -> General , но, конечно, безрезультатно, так как я все еще пытался ссылаться на несуществующий заголовок.
определенно сбивает с толку сообщение об ошибке в этом случае, так как имя заголовка но ошибка дала мне «cannot open file ‘llibboost_filesystem-vc140-mt-gd-1_59.lib’» и никаких номеров строк или чего-то еще.
Я отвечаю, потому что я не вижу это конкретное решение, перечисленное кем-либо еще.
по-видимому, мой антивирус (Ad-Aware) отмечал DLL, от которой зависит один из моих проектов, и удалял его. Даже после исключения каталога, где живет DLL, то же самое поведение продолжалось до тех пор, пока я не перезагрузил компьютер.
У меня была та же проблема, но решение для моего случая не указано в ответах. Моя антивирусная программа (AVG) определила файл MyProg.exe как вирус и положить его в «хранилище вирусов». Вам нужно проверить этот склад, и если файл есть — то просто восстановить его. Это меня выручило.
Решение 1 (для моего случая): перезапустите процесс Проводника windows (да, диспетчер файлов windows).
- Закрыть Visual Studio. Выход Из Системы Windows
- вход в систему, откройте Visual Studio
- построить как обычно. Теперь он строит и может получить доступ к проблемному файлу.
Я предполагаю, что иногда файловая система или тот, кто ее контролирует, теряется с ее разрешениями. Перед перезапуском сеанса windows, пытался убить зомби msbuild32.exe процессы, перезагрузите visual studio, не проверяйте даже отображение файла проблемы. Нет проблем с конфигурацией сборки. Это случается время от времени. Некоторые внутренние вещи в Windows не исправляются,требуется перезагрузка.
в моем случае Я заменил файлы математической библиотеки из предыдущего графического курса игрового движка на GLM. Проблема заключалась в том, что я не добавил их в проект в обозревателе решений Visual Studio (даже если они были в репозитории проекта).
У меня была эта проблема в сочетании с ошибкой LNK2038, а затем это post для разделения библиотеки DLL выпуска и отладки. В этом процессе я очистил всю папку, в которой находились эти зависимости.
к счастью, у меня была резервная копия всех этих файлов, и я получил файл, для которого эта ошибка отбрасывала обратно в папку отладки, чтобы решить проблему. Код ошибки вводил в заблуждение каким-то образом, поскольку мне пришлось потратить много времени, чтобы прийти к этому совету от одного из ответов с этого поста снова.
надеюсь, что этот ответ, помогает кому-то в нужде.
Я решил это с помощью добавлять an существующий проектto мой решение, который я забыл добавить в первый раз.
Это было вызвано ; в конце. Если у вас есть несколько библиотек, они должны быть разделены пустым пространством (пробел), без запятой или точки с запятой!
Так что не используйте ; или что-нибудь еще при перечислении библиотек в свойства проекта > > свойства конфигурации > > Компоновщик > > ввод
У меня была такая же проблема , я просто скопировал код в новый проект и начали строить . Некоторые другие ошибки начали приходить. ошибка C4996:’ fopen’: эта функция или переменная может быть небезопасной. Рассмотрите возможность использования fopen_s вместо
снова решить эту проблему, я добавил свое одно свойство в проект, как показано ниже. Проект — > свойства — > свойство конфигурации — > c/c++ . В этой категории есть поле Имя препроцессора определения Я добавил _CRT_SECURE_NO_WARNINGS это для решения проблемы Надеюсь, это поможет .
Источник