Visual Studio 2010 Express + Win SDK = не могу открыть входной файл «kernel32.lib» - PullRequest
20 голосов
/ 22 марта 2012

Я использовал для компиляции для x64, используя VS2008 Express и Win SDK. Недавно восстановил мою машину (обновил до 64-битной Windows 7) и получил последнюю версию Express. Следовали той же процедуре, чтобы разрешить x64 цели, и мои источники больше не связываются. независимо от того, что я делаю, я всегда получаю:

ССЫЛКА: фатальная ошибка LNK1181: не удается открыть входной файл 'kernel32.lib'

Достаточно забавная 32-битная компиляция работает отлично.

Это какая-то хорошо известная проблема? Google не дал мне никаких подсказок о том, как решить эту проблему, только пару упоминаний об одной и той же проблеме, но без решений.

Можно ли использовать VS 2010 с win 7 SDK для 64-битной системы?

спасибо Pawel

Ответы [ 5 ]

27 голосов
/ 23 марта 2012

В конце концов решение оказалось невероятно простым. Хитрость заключается в том, чтобы указать VS, чтобы выиграть SDK, который по какой-то причине был неверным в моем случае. Project Properties -> VC++ Directories -> Library Directories должно указывать на C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64

12 голосов
/ 13 декабря 2012

Что-то еще, что я нашел, также очень просто, это перейти в Свойства проекта-> Общие и установить Platform Toolset на Windows7.1SDK. Интересно, почему это работает ...

2 голосов
/ 25 марта 2015

У меня была та же проблема, и ответы здесь помогли мне, но я должен был сделать больше вещей.

Что-то повредило мою установку Windows SDK, поэтому мне не хватало всех .lib-файлов, которые попадают вC: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Lib \ (папка x64 внутри была в порядке).Поэтому я следовал тому, что было сказано здесь и переустановил его.Чем я мог бы установить Platform Toolset на Windows7.1SDK (в VS2010 и VS2013).

Это работает, потому что Platform Toolset изменяет путь $ (WindowsSdkDir) в Visual Studio (эти сохраненные пути находятся в системном реестре), которые были сломаны, если Kernel32.lib не найден.

1 голос
/ 28 октября 2016

Если ни одно из вышеуказанных решений не сработало.Остановись и проверь здравомыслие.Я сгорел, используя неправильную -G строку конфигурации, и это дало мне эту вводящую в заблуждение ошибку.

Сначала запустите из командной строки VS , а не обычную командную строку.Вы можете найти его в Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015

Это устанавливает все правильные пути к инструментам VS и т. Д.

Теперь посмотрим, какие генераторы доступны в cmake ...

cmake -help

...<snip>... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

Затем выберите соответствующую строку с добавлением арки.

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

Запускcmake в подкаталоге облегчает выполнение «очистки», так как вы можете просто удалить все в этом каталоге.

Я обновился до Visual Studio 15, но не обращал внимания и пытался сгенерировать для 2012 года.

0 голосов
/ 18 февраля 2016

FWIW, у меня была та же проблема с Visual Studio 2013, когда вся установка SDK v8.1 (файлы + ключи reg) прошла AWOL, вероятно, из-за установки Emborlandero RAD Studio.

Установка переменной среды WindowsSdkDir не имела никакого эффекта, поскольку как сама Studio (devenv.exe, среда проверяется через Process Explorer), так и пакетный файл, вызываемый из пакетного файла с именем vcvarsall.bat, эффективно стерли эту переменную, посколькуони не смогли найти SDK v8.1.

Visual Studio не позволяет настраивать машинно-ориентированные каталоги для всей машины (предложение поместить эту машинную зависимость в каждый файл проектаневероятно нелепо) и своевременно переустановить SDK v8.1 было невозможно.Быстрое исправление, заставляющее Studio работать снова, - добавить строковое значение InstallationFolder в

Software/Microsoft/Microsoft SDKs/Windows/v8.1/

с тем же содержимым, что и у его двоюродного брата v8.0.Это было под HKLM/Wow6432Node, но обычные HKLM или HKCU также должны работать.

Это заставило Studio снова работать немедленно, даже без перезапуска.

...