неустранимая ошибка LNK1104: не удается открыть файл ' kernel32.Либ'

Я получаю эту ошибку с тех пор, как я установил .NET Framework SDK для 64-разрядного программирования на моем компиляторе Visual C++ 2010 Express. Я не могу скомпилировать даже простую программу вообще из-за этой единственной ошибки, которую я получаю. Моя платформа-x86. Вот snap shot, если это поможет:

enter image description here

Я не знаю, что еще сказать. Я только что загрузил этот компилятор вчера, и он работал нормально. Я хотел перейти с 32-битного программирования на 64-бит, чтобы я мог работа со сборкой, поэтому я загрузил это SDK. Я искал в Google и даже здесь, в Stackoverflow. Google не очень помог, но я нашел сообщение здесь это казалось похожим на мой, но ответы не сделали много справедливости. Кто-нибудь знает, почему эта ошибка происходит и как я могу избавиться от него?

13 ответов


Проверьте каталоги 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 Файлы.

Вы (как и я), вероятно, "настроили" свой makefile на #1, выше, через что - то вроде это:

MS_SDK_BASE_DOS := C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
ENV_SET         := LIB="$(MS_SDK_BASE_DOS)\Lib\x64"

но теперь вам нужно изменить эту настройку на #2, выше, вот так:

MS_SDK_BASE_DOS := C:\Program Files\Microsoft SDKs\Windows\v7.1

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


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


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

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

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

моя система Win-7, 64bit, VS 2013, .net framework 4.5


У меня была другая проблема в 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:

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\VC\Auxiliary\Build\vcvars32.bat"

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

@call "%~dp0vcvarsall.bat" x86 %*

...вместо этого для моего конкретного приложения командной строки 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. И это сработало.

окружающая среда:

  • Windows 10
  • Visual Studio 2015
  • Visual C++

решение:

  1. открыть проект Property Page;
  2. перейти к General страница;
  3. изменить Target Platform Version на нужную целевую платформу (например,8.1).