Не удается открыть файл lib

Обновлено: 07.07.2024

Как решить проблему, из-за которой ошибка LNK1104 не может открыть файл * .lib при компиляции программы C ++ в среде win10 + VS2017 + WDK

После вчерашней установки VS2017 + WDK на компьютер я столкнулся с невероятной проблемой: собирается ли он скомпилировать какой-либо проект, включая все ранее полностью нормальные проекты, он выдаст похожую ошибку:

Для другого проекта содержимое приглашения может не совпадать, но есть файл библиотеки MFC (например, mfc140d.lib и т. Д.), Который не может быть найден. Эти проекты были явно в порядке, и не было никаких проблем. Это странно .

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

Интеллектуальная рекомендация


WECHAT MILLY WAY POINT CAMENT CARD - СОВРЕМЕННЫЕ СТРАНИЦЫ ПРОГЛЯЮТНОЕ ЗНАЧЕНИЕ (Запрос)

WECHAT Small Pass Pass Value и значение приобретения: 1. Установите способ настройки идентификатора идентифицирует значение параметра, передаваемое после прыжка; 2, используя метод Data-XXXX для идент.


Текущая задача Узел больше экземпляров


[Linux] Программирование сетевых сокетов UDP

Что такое протокол UDP Протокол UDP называетсяПротокол пользовательских датаграмм UDP - протокол транспортного уровня Без установления соединения, ненадежная передача, ориентированная на дейтаграмму П.



Основная идея обработки больших данных - разделяй и властвуй

Разделяй и властвуй - «разделяй и властвуй» Как мы все знаем, компьютеры очень быстрые и используются людьми. Однако независимо от того, насколько быстрым является компьютер, способность о.

У меня проблемы с компиляцией базовой программы openGL на VS 2012. Я получаю ошибку сборки после компиляции, давая мне:

Я следовал инструкциям, данным мне в документации для GLEW.

Я также добавил glew32.dll в папку Debug в папке проекта вместе с исполняемым файлом. Пока я продолжаю получать эту ошибку.

Если вам нужно более подробное разъяснение шагов, которые я сделал, пожалуйста, не стесняйтесь спрашивать

Решение

Честно говоря, нет реальной пользы от использования DLL-версии glew (если не считать уменьшенного размера исполняемого файла, но это вряд ли имеет значение на современных ПК с Windows).

Это не значит, что вы можете просто вставить новую версию DLL в свое приложение и использовать расширения, которые вы никогда раньше не использовали. Точно так же исправления ошибок настолько редки / не нужны в библиотеке, которая в основном просто анализирует спецификацию расширения. файлы, которые используют DLL как средство исправления ошибок загрузки расширений в поставляемом программном обеспечении, также не практичны. Статическая ссылка на glew (это означает glew32s.lib ) имеет гораздо больше смысла в долгосрочной перспективе.

Библиотека статических ссылок также более переносима в Windows, она будет работать с MSVC и MinGW (тогда как библиотека DLL работает только с MSVC). Ссылка против glew32s и поместите это в любой каталог, который вы решили использовать для дополнительных библиотечных зависимостей.

Вот пример конфигурации решения для проекта, который я написал, который использует glew. Я установил соглашение для этого конкретного программного обеспечения, где зависимости времени компиляции хранятся в platform/<Subsystem> , Таким образом, у меня есть glew32s.lib (32-разрядный) и glew64s.lib (64-разрядный) в ./Epsilon/platform/OpenGL/glew<32|64>s.lib

введите описание изображения здесь

Другие решения

Это случилось со мной в этой ситуации, я очищаю решение и собираю его снова, затем возникает много ошибок, таких как LNK1104.

После попытки перезапустить IIS я успешно строю решение без ошибок LNK1104. Я не знаю почему, но перезапуск IIS занимает гораздо больше времени, чем обычно, поэтому я предполагаю, что что-то используется другим рабочим процессом IIS.

Просто сделайте снимок, чтобы увидеть, происходит ли эта магия на вас.

Шаги по использованию классов из другого проекта (добавление ошибок компоновщика заголовка и решателя)

«Свойства> Linker> Дополнительные каталоги библиотеки». Укажите местоположение создаваемого файла lib.

«Свойства> Линкер> Ввод> Дополнительные зависимости»: Добавьте имя файла lib.

Это похоже на то, что библиотека была указана как зависимость, но компоновщик / дополнительные пути поиска не были установлены для включения каталога, в котором расположена библиотека.

Этот вопрос старый и помечен как решенный, но у меня были похожие симптомы проблемы с совершенно другим решением. Так что на случай, если кто-то еще споткнется здесь:
Оказалось, что, поскольку у меня было 2 проекта под одним решением (dll и exe), порядок построения был смешанным (из окна вывода):



Позавчера удалил VS 2013 Express. Сегодня заметил, что не собираются проекты C++ в VS 2012.
Даже "Hello World".

Ошибка следующая:
LINK : fatal error LNK1104: не удается открыть файл "gdi32.lib"

Позавчера удалил VS 2013 Express. Сегодня заметил, что не собираются проекты C++ в VS 2012.
Даже "Hello World".

Ошибка следующая:
LINK : fatal error LNK1104: не удается открыть файл "gdi32.lib"


Линкер говорит, что не может найти этот файл.
Посмотри, куда установлен SDK. Имеется ли он, имеется ли там проблемный файл.
Если нет - установи SDK. И далее в настройках студии укажи пути к инклюдам,
либам и исполняемым файлам в SDK.
Это необходимо сделать для каждой платформы.
Если с SDK всё в порядке просто проверь вышеуказанные настройки.



Visual Studio SDK или Windows SDK?

Не нашёл у себя вообще gdi32.lib на диске C: через поиск.

И Visual Studio SDK нигде не нашёл.
Скачал и поставил, но опять таки, не могу найти куда он поставился.

Сейчас пробую поставить Windows SDK, но он уж больно тяжёлый для моего соединения с интернет.

Добавлено 07.06.14, 15:29

Сейчас пробую поставить Windows SDK, но он уж больно тяжёлый для моего соединения с интернет. Ну и очевидно, что он вам нафиг не нужен, т.к. lib и вижуалка идут для разработки ПО.



Ну и очевидно, что он вам нафиг не нужен, т.к. lib и вижуалка идут для разработки ПО.

Так какой тогда SDK нужен?

Установка Visual Studio SDK не помогла.
В папке Windows Kits есть разные библиотеки, но нужной нет.

Установка Visual Studio SDK не помогла.
В папке Windows Kits есть разные библиотеки, но нужной нет.



Скопировал содержимое этих папок с другого компьютера, теперь вроде всё работает.

enter image description here

Проверьте каталоги VC++, в VS 2010 их можно найти в свойствах вашего проекта. Проверьте ли $(WindowsSdkDir)\lib входит в список каталогов, если нет, вручную добавьте его. Если вы строите для платформы X64, вы должны выбрать X64 из" платформы " ComboBox и убедитесь, что $(WindowsSdkDir)\lib\x64 входит в список каталогов.

измените набор инструментов платформы на: "Windows7.1SDK " в разделе свойства проекта - >свойства конфигурации - >общие

убедитесь, что у вас есть в каталогах VC++ (щелкните правой кнопкой мыши проект, выберите страницу свойств),

  • Включить Каталоги: $(IncludePath)
  • каталоги библиотеки элементов списка: $(LibraryPath)

только для пользователей командной строки (т. е. - makefile):

  1. при установке VC++ Express, это только 32-разрядный. Итак, все идет в C:\Program Файлы (x86).
  2. затем вы решаете обновить до 64-разрядных capabillities. Итак, вы устанавливаете SDK. Но он 64-битный. Итак, все идет в C:\Program Файлы.

(Не пропустите " v7.0A " to " v7.- Перемены тоже.)

Я получил аналогичную ошибку, проблема остановилась, когда я проверил список "Компоновщик - > ввод - > дополнительные зависимости" в свойствах проекта. Мне не хватало половины двоеточия"; "непосредственно перед" %(AdditionalDependencies)". У меня также была одна и та же запись дважды. Этот список следует редактировать отдельно для отладки и выпуска.

добавить lib путь WindowsSdks в проекте - >свойства - >свойства конфигурации - > каталоги VC++ -> каталоги библиотек.

Я добавил следующий путь и ошибок::

C:\Program файлы (x86)\Microsoft SDKs\Windows\v7.1A \ Lib;

У меня была другая проблема в Windows 10 с Visual Studio 2017, но с теми же эффектами. Я думаю, что мои проблемы сводились к тому, что VS был установлен на диск, отличный от "C:\". Я решил проблему, переустановив Windows 10 SDK

сначала мне пришлось удалить Windows SDK (было установлено две версии). Затем запустил исполняемый файл. После установки запустите visual studio, и он работал нормально.

enter image description here

решение Джеро сработало для меня.
В Visual Studios 2012 выполните следующие действия.
- Перейдите в Обозреватель решений
- Правой кнопкой мыши на вашем проекте
- Перейти к свойствам
- Свойства Конфигурации -> Общие
- Набор Инструментов Платформы ->изменить на Windows7.1SDK

Если вышеуказанное решение не работает, проверьте, есть ли у вас $(LibraryPath) в свойствах - > каталоги VC++ - >каталоги библиотеки. Если вы упускаете его, попробуйте добавить.

ОС: Win10, Visual Studio 2015

решение : Перейдите в Панель управления - - - > удалить программу - - - MSvisual studio - - - - > изменить - - - - >организовать = ремонт

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

сегодня в Visual Studio 2017 у меня была та же проблема.

причиной в моем случае оказалась плохая настройка среды в NETFXSDKDir ( NETFXSDKDir=C:\Program Files (x86)\Windows Kits\NETFXSDK.6.1 ). Это должно быть вместо NETFXSDKDir=C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x86 . В частности, как установлено в этом пакетном файле (мой каталог фактически имеет 4 разных файла) для командной строки для VS2017:

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

. вместо этого для моего конкретного приложения командной строки C++ я просто добавил явный текст пути: ;C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x86 для общей строки в "каталогах библиотеки", как это: $(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x86 . (Щелкните правой кнопкой мыши проект, свойства → свойства конфигурации → каталоги VC++ → каталоги библиотеки.), Который разрешил мою "фатальную ошибку LNK1104: не удается открыть файл" kernel32.ошибка Либ'". Я нашел этот намек в этот вопрос GitHub.

Примечание это воспроизводимо в визуальном Studio 2017 Enterprise 2017 версии 15.1 (26403.0) даже после успешного "ремонта" установки. при создании нового консольного приложения Visual C++ Win32 и попытке компиляции.

фактически, если не создано пустое приложение, шаблон по умолчанию также включает ссылку на <SDKDDKVer.h> и с этим я получаю эту дополнительную ошибку: Error (active) E1696 cannot open source file "SDKDDKVer.h" . Так Что Я создал пустой проект c++.

на Visual Studio 2017, Я пошел к Свойства Проекта ->Свойства Конфигурации ->общие, отобранных Все Платформы (1), затем выберите выпадающий (2) под версия Windows SDK и обновлен с 10.0.14393.0 на тот, который был установлен (3). Для меня это было 10.0.15063.0.

enter image description here

дополнительная информация: это исправило ошибку в моем случае, потому что версия Windows SDK помогает VS выбрать правильные пути. каталоги VC++ -> Библиотека-Каталоги -> редактировать ->макрос -> показывает, что макрос $(WindowsSDK_LibraryPath_x86) имеет путь с номером версии выше.

Я просто встречался и решил эту проблему сам. Моя проблема немного другая. Я использую visual studio в Windows 10. Когда я создаю проект, Target Platform Version было автоматически установлено значение 10.0.15063.0 . Но нет kernel32.lib для этой версии SDK также нет других необходимых файлов заголовков и файлов lib. Поэтому я изменил Target Platform Version до 8.1 . И это сработало.

Читайте также: