Lnk1181 не удается открыть входной файл delayimp lib
I've been encountering a strange bug in Visual Studio 2010 for some time now.
I have a solution consisting of a project which compiles to a static library, and another project which is really simple but depends on this library.
Sometimes, in the last days extremely frequent, after Rebuilding the Solution or just compiling it with 1-3 changed source files, I get the following error:
Where compiling thelibrary.lib was a success without any errors or warnings.
I have tried cleaning the solution, but that doesn't always work.
I have exactly the same issue. Solution with 3 native c++ projects. 1 exe and 2 static libs. Always getting mentioned error on Rebuild. After that I just do Build and it goes ok. Look like a bug.
Другие решения
Хорошо, у нас наконец-то есть реальный ответ на эту обобщенную проблему, а не на опечатку ОП, если это тоже не разблокирует вас.
Актуальная проблема (перспектива «черного ящика»): автоматически заполненные разрывы записей «Build directory» для проектов внутри пустых каталогов. Qt Creator фактически запрещает вам и запрещает использовать пробелы при создании новых проектов. Вы все еще можете закрыть новый проект и переименовать его, чтобы добавить пробел, и Qt Creator изящно с этим справится. Если вы скопируете каталог сборки, даже с пробелами в нем, и вставите его в поле, заменяющее сломанный автоматически сгенерированный путь (у меня были относительные пути), тогда JOM начнет работать правильно, так как QMake не генерирует никаких ошибок. Я не могу говорить за другие инструменты Make.
Это должно разблокировать вас, если это не было простой проблемой для удаления старых папок, сгенерированных QMAKE, что является наиболее распространенной проблемой, с которой люди сталкиваются с этой конкретной ошибкой при разработке в Qt Creator.
Проблема была решена.
Проблема была, когда создаешь новый проект ( GUI или же Console ), все исходные файлы, принадлежащие этому новому проекту, имеют неправильное расширение, например: main.cp , но правильное расширение должно быть ex: main.cpp ,
И при изменении всех исходных файлов расширение от .cp в .cpp работал нормально.
Или измените расширение исходного файла по умолчанию с [Инструменты -> Опция -> C ++].
хмм Если я правильно помню, когда сталкивался с подобными проблемами, используя вашу аналогичную настройку (QtCreator и Windows) под управлением QMAKE & Перестройка проекта снова помогла мне решить эту ошибку компоновщика.
Бежать Clean а также qMake а также rebuild ,
Мне нравится эта проблема, и это помогло мне.
Я использую Visual Studio 2013. Я пытаюсь создать некоторый код, данный мне от моего профессора, и я продолжаю получать эту ошибку:
ССЫЛКА: фатальная ошибка LNK1181: не удается открыть входной файл
‘C: \ Users \ Мандучи \ Documents \ eyegaze \ EyeGazeDemo .. \ Библиотеки \ OpenCV \ Lib \ opencv_core249.lib’
Здесь была моя попытка:
- В разделе «Свойства конфигурации» -> «Каталоги VC ++» я добавил адрес папки, содержащей файл .lib, в «Включить каталоги» и «Библиотечные каталоги».
- Linker-> General и там также добавили дополнительный каталог библиотеки.
- Linker-> Input и добавил «opencv_core249.lib» в дополнительные зависимости
Я новичок в Visual Studio и C ++, поэтому я мог сделать это неправильно?
Библиотеки в проектах из сетевых или других источников
При построении проекта, скопированного с другого компьютера, расположения установки библиотеки могут отличаться. Для сборок из командной строки убедитесь, что для сборки правильно заданы пути к переменной среды LIB и библиотеке. в Visual Studio можно просмотреть и изменить текущие пути к библиотекам, заданные на страницах свойств проекта. на странице VC++ каталоги выберите элемент управления "раскрывающийся список" для свойства каталоги библиотек , а затем нажмите кнопку изменить. В разделе вычисленное значение диалогового окна каталоги библиотек перечислены текущие пути поиска файлов библиотек. Обновите эти пути, чтобы они указывали на локальные библиотеки.
Не удается открыть файл, созданный проектом
Эта ошибка может возникать, если файл filename еще не существует, когда компоновщик пытается получить к нему доступ. Это может произойти, когда один проект зависит от другого в решении, но проекты создаются в неправильном порядке. Чтобы устранить эту проблему, убедитесь, что ссылки проекта заданы в проекте, который использует этот файл. После этого отсутствующий файл будет создан до того, как он потребуется. дополнительные сведения см. в статьях добавление ссылок в проекты Visual Studio C++ и управление ссылками в проекте.
Windows библиотеки, например kernel32. lib
Если файл, который не удается открыть, является одним из стандартных файлов библиотеки, предоставляемых корпорацией Майкрософт, например kernel32. lib, может возникнуть ошибка конфигурации проекта или ошибка установки. убедитесь, что Windows SDK установлен. если для проекта требуются другие библиотеки майкрософт, такие как MFC, убедитесь, что компоненты MFC также установлены установщиком Visual Studio. Вы можете снова запустить установщик, чтобы добавить дополнительные компоненты в любое время. Дополнительные сведения см. в Изменение Visual Studio. Используйте вкладку отдельные компоненты в установщике, чтобы выбрать конкретные библиотеки и пакеты SDK.
Дополнительные зависимости, указанные в интегрированной среде разработки
При указании отдельных библиотек в свойстве Дополнительные зависимости используйте пробелы для разделения имен библиотек. Не используйте запятые или точки с запятой. При использовании пункта меню Правка для открытия диалогового окна Дополнительные зависимости используйте символы новой строки для разделения имен, а не запятых, точек с запятой или пробелов. Также используйте символы новой строки при указании путей к библиотекам в папках библиотек и дополнительных каталогах библиотек .
Линкер Командная Строка
/OUT:»debug\EyeGazeDemo.exe «/ MANIFEST / NXCOMPAT /PDB:»debug\EyeGazeDemo.pdb» / DYNAMICBASE «glu32.lib» «opengl32.lib» «gdi32.lib» «user32.lib «30032.lib» «opencv_ «» opencv_ts300d.lib «» opencv_world300.lib «» opencv_world300d.lib «» E: \ Qt \ 5.0.2 \ msvc2012_64 \ lib \ qtmaind.lib «» E: \ Qt \ 5.0.2 \ msvc2012_64 \ lib \ Qt5Cored. lib «» E: \ Qt \ 5.0.2 \ msvc2012_64 \ lib \ Qt5Widgetsd.lib «» E: \ Qt \ 5.0.2 \ msvc2012_64 \ lib \ Qt5Guid.lib «» opencv_calib3d300.lib «» opencv_contrib300.lib «» opencv_core300 » .lib «» opencv_photo300d.lib «» opencv_stitching300d.lib «» opencv_superres300d.lib «» opencv_video300d.lib «» opencv_videostab300d.lib «» kernel32.lib «» winspool.lib «» comdlg32.lib «shell.lib» «32d » .lib «» ole32.lib «» oleaut32.lib «» uuid.lib «» odbc32.lib «» odbccp32.lib «» OpenCVConfig.cmake «» OpenCVModu les.cmake «» OpenCVModules-debug.cmake «» OpenCVModules-release.cmake «» E: \ eyegaze \ eyegaze \ Libraries \ OpenCV \ lib \ opencv_core249d.lib «» E: \ eyegaze \ eyegaze \ Libraries \ OpenCV \ lib \ opencv_imgproc249d.lib «» E: \ eyegaze \ eyegaze \ Libraries \ OpenCV \ lib \ opencv_highgui249d.lib «» E: \ eyegaze \ eyegaze \ Libraries \ OpenCV \ lib \ opencv_objdetect249d.lib «eye \ eye \ eye \ eye \ eyegg» OpenCV \ lib \ opencv_ml249d.lib «» E: \ eyegaze \ eyegaze \ Libraries \ Intraface \ lib \ IntraFaceDLL-x86d.lib «/ DEBUG / MACHINE: X86 / SAFESEH / INCREMENTAL: НЕТ /PGD:»debug\EyeGazemo» / SUBSYSTEM: WINDOWS / MANIFESTUAC: «level = ‘asInvoker’ uiAccess = ‘false'» /ManifestFile:»Win32\Debug\EyeGazeDemo.exe.intermediate.manifest «/ ERRORREPORT: PROMPT / NOLOGO / LIBPATc: C: build \ x64 \ vc12 \ x64 \ vc11 \ lib «/LIBPATH:»E:\Qt\5.0.2\msvc2012_64\lib» / LIBPATH: «E: \ eyegaze \ eyegaze \ Libraries \ OpenCV \ lib» / LIBPATH: » E: \ eyegaze \ eyegaze \ Libraries \ Intraface \ lib «/ LIBPATH:» E: \ eyegaze \ eyegaze \ EyeGazeDemo «/ LIBPATH:» C: \ opencv \ build \ x64 \ vc12 \ lib «/ TLBID: 1
Библиотека vccorlib. lib
Слишком большие файлы
Эта ошибка может возникать из-за слишком большого размера файла. Библиотеки или объектные файлы, размер которых превышает гигабайт, может вызвать проблемы для 32-разрядного компоновщика. Возможным исправлением этой проблемы является использование 64-разрядного набора инструментов. Дополнительные сведения о том, как использовать 64-разрядный набор средств в командной строке, см. в разделе как включить 64-разрядный Visual C++ набор инструментов в командной строке. сведения о том, как использовать 64-разрядный набор инструментов в интегрированной среде разработки, см. в разделе использование MSBuild с 64-разрядным компилятором и инструментами. также см. статью Stack Overflow post: как сделать Visual Studio использовать собственную цепочки инструментов amd64.
Недостаточно места на диске
Эта ошибка может возникать, если на диске недостаточно места. Компоновщик использует временные файлы в нескольких ситуациях. Даже если на диске достаточно места, большие ссылки могут выпустить или фрагментировать свободное место на диске. Рассмотрите возможность использования параметра /OPT (оптимизация) . выполнение транзитного исключения COMDAT считывает все объектные файлы несколько раз.
Не удается открыть файл "К:\програм.ОБЖ"
Чтобы устранить эту проблему для сборок из командной строки, проверьте параметры параметра /libpath . Также проверьте пути, указанные в переменной среды LIB, и пути, указанные в командной строке. Обязательно используйте двойные кавычки для всех путей, содержащих пробелы.
Чтобы устранить эту проблему в интегрированной среде разработки, при необходимости добавьте двойные кавычки для следующих свойств проекта:
свойство каталоги библиотеки на странице свойств конфигурации > VC++ каталоги
Свойство " Дополнительные каталоги библиотек " на странице свойств " Общие" компоновщика > свойств > конфигурации
Свойство Дополнительные зависимости на странице свойств входных данных компоновщика > свойств > конфигурации .
Справка, моей проблемы нет в списке!
Qt creator работал хорошо, но внезапно показывает проблему error: LNK1181: cannot open input file 'debug\main.obj' ,
Эта проблема проявляется всегда с любым типом приложения либо GUI или же console ,
Я удалил Qt и установил снова, но проблема все еще существует.
Я ничего не делал в настройках создателя Qt, оставил настройки по умолчанию.
Следующее приложение простое консольное приложение возникает та же проблема в нем.
Заметка: Я использую Qt 5.1.1 для 32-битной Windows (VS 2010, OpenGL).
Проблемы с путями или именами файлов
Не удается открыть сторонний файл библиотеки
Существует несколько распространенных причин этой проблемы.
Путь к файлу библиотеки может быть неверным или не заключен в двойные кавычки. Или, возможно, вы не указали его для компоновщика.
Возможно, вы установили 32-разрядную версию библиотеки, но при этом собираетесь на 64 бит или наоборот.
Библиотека может зависеть от других библиотек, которые не установлены.
Может потребоваться предоставить каталог библиотеки, переопределяющий каталог стандартной библиотеки. В командной строке используйте параметр /libpath . В интегрированной среде разработки используйте свойство Дополнительные каталоги библиотек на странице свойств " Общие" компоновщика > свойств > конфигурации для проекта.
Убедитесь, что установлены все версии библиотеки, необходимые для создаваемых конфигураций. воспользуйтесь программой управления пакетами vcpkg , чтобы автоматизировать установку и настройку для многих распространенных библиотек. По возможности лучше создавать собственные копии сторонних библиотек. Затем вы убедитесь, что все локальные зависимости библиотек созданы для тех же конфигураций, что и ваш проект.
Другие решения
Вам нужно будет знать местоположение файла .lib, а затем вам нужно будет добавить его в конфигурацию вашего проекта. Это будет очень похоже на то, что вы добавляете ссылку на библиотеку DirectX, BOOST и т. Д. Я нашел следующий пост, который показывает как добавить дополнительные библиотеки
Вы также хотите убедиться, что вы применять изменения во ВСЕХ сборках, чтобы вы были готовы к выпуску, отладке и т. д.
Qt creator was working well, but suddenly shows a problem error: LNK1181: cannot open input file 'debug\main.obj' .
This problem shows always with any type of application either GUI or console .
I've uninstall the Qt, and install again, but the problem still exists.
I did not do anything in the Qt creator settings, I left the default settings.
The following application is simple console application occur the same problem in it.
Note: I'm using Qt 5.1.1 for Windows 32-bit (VS 2010, OpenGL).
This is most likely caused by an error in the project settings. Source files (*.cpp) are compiled into object files (*.o) which are then all linked together. Somehow the linker is failing to find the object files compiled from your source files. I can tell it is looking into debug\, but they are being stored somewhere else. Do you have write permissions to that directory?
what I said still applies for Windows, but unfortunately I'm not very familiar with it, specially when it comes to programing.
Приложение выполняется или загружается в отладчике
Если filename — имя исполняемого файла или связанный с ним PDB-файл, см. раздел Если приложение уже запущено. Затем проверьте, загружен ли он в отладчик. Чтобы устранить эту проблему, перед повторным созданием программы закройте программу и выгрузите ее из отладчика. Если приложение открыто в другой программе, например в редакторе ресурсов, закройте его. Если программа не отвечает, может потребоваться завершить процесс с помощью диспетчера задач. Также может потребоваться закрыть и перезапустить Visual Studio.
Параллельная синхронизация сборок
если вы используете параллельный вариант сборки, Visual Studio мог заблокировать файл в другом потоке. Чтобы устранить эту проблему, убедитесь, что один и тот же объект кода или библиотека не встроены в несколько проектов. Используйте зависимости сборки или ссылки проекта, чтобы выбрать в проекте созданные двоичные файлы.
Решение
Удалить все ссылки на библиотеку. Где-то этот проект указывает на путь, который вы указали выше, и вам нужно его удалить.
Затем добавьте библиотеку в исполняемый проект. Щелкните правой кнопкой мыши -> добавить -> существующий элемент, измените тип на все файлы, затем перейдите к расположению файла.
Приложение заблокировано антивирусным сканированием
Антивирусные программы часто временно блокируют доступ к вновь созданным файлам, особенно .exe и .dll исполняемые файлы. Чтобы устранить эту проблему, попробуйте исключить каталоги сборки проекта из антивирусного сканера.
8 Answers 8
This problem also occurs if the path of your project (name of any folder) contains a white space.
@kayleeFrye_onDeck If you cannot change the project path maybe you can rewrite builds steps and put the project path in qoutes? Or write a script that builds the project without the use of QtCreator? Other than that I have no idea.
@kayleeFrye_onDeck I am afraid that Qt Creaor simply does not support spaces in the project path. You are explicitly told to remove spaces when creating new project. Sorry
No need to apologize! :) This is one of the few cases where Visual Studio's default project paths with white space already included makes Qt Creator seem quite immature for such a basic thing.
It looks like the culprit here is actually JOM. If you go to "Projects" section of Qt Creator in the "Build" tab, you can see that QMAKE adds quotes around project files it runs against, but JOM does not. Furthermore, there does not appear to be a way to inject quotes in those fields without breaking Qt's ability to detect the directory. I think I found a way to actually fix this, but I need to test some more.
This problem occurs also if you have in the .pro or .pri files something like:
or
Okay, we finally have a real answer for this generalized problem instead of the OP's typo problem if that didn't unblock you either.
Actual Problem (black-box perspective): The "Build directory" auto-filled entry breaks for projects inside whitespace directories. Qt Creator actually prohibits you and tells you not to use whitespace when making new Projects. You can still close a new project and re-name it to add whitespace, and Qt Creator will handle it gracefully. If you copy the build directory, even with whitespace in it, and paste that into the field replacing the broken auto-generated path (mine was using relative paths) then JOM will start working correctly, as QMake does not generate any errors. I can't speak for other Make tools.
- Make or clone down your project with whitespace
- Load it in Qt Creator
- Run QMAKE
- Select the "Project" button on the left-hand side
- Make sure you're in the "Build" tab
- Select "Browse", and then re-select the shadow directory QMAKE made
That should unblock you if it wasn't a simple issue for deleting the old QMAKE-generated folders, which is the most common problem people face with this specific error while developing within Qt Creator.
Другие распространенные проблемы
Слишком длинные пути
Эта ошибка может появиться, когда путь к файлу расширяется до 260 символов. При необходимости измените структуру каталогов или Сократите имена папок и файлов, чтобы сократить пути.
Не удается открыть приложение или его PDB-файл
Проблемы в переменной среды TMP
Если имя файла LNKnnn, то это имя файла, созданного компоновщиком для временного файла. Каталог, указанный в переменной среды TMP, может не существовать. Кроме того, для переменной среды TMP может быть задано несколько каталогов. Для переменной среды TMP должен быть указан только один путь к каталогу.
Больше информации:
- Я делаю это на моем Windows 7 Bootcamp
- код находится на флешке, потому что у меня недостаточно места на моем
раздел bootcamp.
Любая помощь будет оценена! Спасибо
ССЫЛКА: фатальная ошибка LNK1181: не удается открыть входной файл
‘Opencv_calib3d300.lib’
Я думаю, что ‘opencv_calib3d300.lib’ находится на Linker-> input-> Additional Dependencies под унаследованными значениями.
Библиотеки для розничной торговли, отладки или конкретной платформы
Эта ошибка может возникнуть при первой сборке для новой целевой платформы или конфигурации, например в розничной торговле или ARM64. в интегрированной среде разработки проверьте, установлены ли набор инструментов платформы и Windows SDK версии , указанной на странице свойств общие . также убедитесь, что необходимые библиотеки доступны в каталогах библиотек , указанных на странице свойств каталоги VC++. Проверьте свойства каждой конфигурации, например Debug, Retail, x86 или ARM64. Если одна сборка работает, но другая нет, Сравните параметры обоих параметров. Установите все отсутствующие необходимые инструменты и библиотеки.
Решение
Эта проблема также возникает, если путь вашего проекта (имя любой папки) содержит пробелы.
19 Answers 19
In Linker, general, additional library directories, add the directory to the .dll or .libs you have included in Linker, Input. It does not work if you put this in VC++ Directories, Library Directories.
To clarify, you need to right-click on your project, go to "Build Dependencies" -> "Project Dependencies"
And what if I actually need the dependent library linked in? (Isn't that the main reason to specify the lib as a dependency in the first place)
Basically, if you have spaces in the path of the .lib, that's bad. Don't know if that's what's happening for you, but seems reasonably possible.
The fix is either 1) put the lib reference in "quotes", or 2) add the lib's path to your Library Directories (Configuration Properties >> VC++ Directories).
Thank you for your solution, I did face these kind of problems and what you mentioned is right.If we have spaces in the library search path it will fail to detect the libraries. I am using visual studio 2013
@Clippy I have encountered the same when I upgraded the visual studio. I literally wanted to cry when I found this solution.
I had the same issue in both VS 2010 and VS 2012. On my system the first static lib was built and then got immediately deleted when the main project started building.
The problem is the common intermediate folder for several projects. Just assign separate intermediate folder for each project.
Read more on this here
This happened to me too when I was duplicating projects for a new solution of similar projects. Please note, you can still use the same output folder for your binaries, just not the same intermediate folder.
I solved it with the following:
Go to View-> Property Pages -> Configuration Properties -> Linker -> Input
Under additional dependencies add the thelibrary.lib. Don't use any quotations.
I had a similar problem in that I was getting LINK1181 errors on the .OBJ file that was part of the project itself (and there were only 2 .cxx files in the entire project).
Initially I had setup the project to generate an .EXE in Visual Studio, and then in the Property Pages -> Configuration Properties -> General -> Project Defaults -> Configuration Type , I changed the .EXE to .DLL. Suspecting that somehow Visual Studio 2008 was getting confused, I recreated the entire solution from scratch using .DLL mode right from the start. Problem went away after that. I imagine if you manually picked your way through the .vcproj and other related files you could figure out how to fix things without starting from scratch (but my program consisted of two .cpp files so it was easier to start over).
I'm stumbling into the same issue. For me it seems to be caused by having 2 projects with the same name, one depending on the other.
For example, I have one project named Foo which produces Foo.lib. I then have another project that's also named Foo which produces Foo.exe and links in Foo.lib.
I watched the file activity w/ Process Monitor. What seems to be happening is Foo(lib) is built first--which is proper because Foo(exe) is marked as depending on Foo(lib). This is all fine and builds successfully, and is placed in the output directory--$(OutDir)$(TargetName)$(TargetExt). Then Foo(exe) is triggered to rebuild. Well, a rebuild is a clean followed by a build. It seems like the 'clean' stage of Foo.exe is deleting Foo.lib from the output directory. This also explains why a subsequent 'build' works--that doesn't delete output files.
A bug in VS I guess.
Unfortunately I don't have a solution to the problem as it involves Rebuild. A workaround is to manually issue Clean, and then Build.
Эта ошибка возникает, когда компоновщику не удается открыть файл для чтения или записи. Ниже перечислены две наиболее распространенные причины этой проблемы.
Программа уже запущена или загружена в отладчике, и
пути к библиотеке неверны или не заключены в двойные кавычки.
Существует множество других возможных причин этой ошибки. Чтобы сократить их, сначала проверьте Тип файла. Затем используйте следующие разделы для выявления и исправления конкретной проблемы.
Неправильные разрешения для файла
Эта ошибка может возникать, если у вас недостаточно разрешений для доступа к файлу filename. Это может произойти, если для доступа к файлам библиотеки в защищенных системных каталогах используется обычная учетная запись пользователя. Или, если вы используете файлы, скопированные с других пользователей, у которых все еще есть исходный набор разрешений. Чтобы устранить эту проблему, переместите файл в каталог проекта с возможностью записи. Если перемещенный файл имеет недоступные разрешения, выполните команду takeown.exe в окне командной строки администратора, чтобы стать владельцем файла.
обновленные библиотеки Windows SDK
Библиотеки vcruntime с отслеживанием версий
Не удается открыть файл библиотеки Майкрософт
Читайте также: