неустранимая ошибка LNK1104: не удается открыть файл ' kernel32.Либ'
Я получаю эту ошибку с тех пор, как я установил .NET Framework SDK для 64-разрядного программирования на моем компиляторе Visual C++ 2010 Express. Я не могу скомпилировать даже простую программу вообще из-за этой единственной ошибки, которую я получаю. Моя платформа-x86. Вот snap shot, если это поможет:
Я не знаю, что еще сказать. Я только что загрузил этот компилятор вчера, и он работал нормально. Я хотел перейти с 32-битного программирования на 64-бит, чтобы я мог работа со сборкой, поэтому я загрузил это SDK. Я искал в Google и даже здесь, в Stackoverflow. Google не очень помог, но я нашел сообщение здесь это казалось похожим на мой, но ответы не сделали много справедливости. Кто-нибудь знает, почему эта ошибка происходит и как я могу избавиться от него?
13 ответов
Проверьте каталоги VC++, в VS 2010 их можно найти в свойствах вашего проекта. Проверьте ли $(WindowsSdkDir)\lib
входит в список каталогов, если нет, вручную добавьте его. Если вы строите для платформы X64, вы должны выбрать X64 из" платформы " ComboBox и убедитесь, что $(WindowsSdkDir)\lib\x64
входит в список каталогов.
измените набор инструментов платформы на: "Windows7.1SDK " в разделе свойства проекта - >свойства конфигурации - >общие
убедитесь, что у вас есть в каталогах VC++ (щелкните правой кнопкой мыши проект, выберите страницу свойств),
- Включить Каталоги: $(IncludePath)
- каталоги библиотеки элементов списка: $(LibraryPath)
только для пользователей командной строки (т. е. - makefile):
- при установке VC++ Express, это только 32-разрядный. Итак, все идет в C:\Program Файлы (x86).
- затем вы решаете обновить до 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, и он работал нормально.
решение Джеро сработало для меня.
В 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.
дополнительная информация: это исправило ошибку в моем случае, потому что версия 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++
решение:
- открыть проект
Property Page
; - перейти к
General
страница; - изменить
Target Platform Version
на нужную целевую платформу (например,8.1
).