LNK1104: невозможно открыть файл kernel32.lib

Я установил VS2010, но обнаружил, что intellisense не работает. Я поискал в Интернете и обнаружил, что я не единственный, у кого была эта проблема. Итак, я установил VS2008, и все было хорошо. Затем я решил очистить свой компьютер, удалил VS2010 и сразу начал получать эту ошибку в своих программах (новых и старых). Даже простая тестовая программа с одной командой cout. Я попытался восстановить VS2008, но это не сработало, поэтому я попытался удалить, а затем переустановить, но все равно получаю ту же проблему.

Я искал в Интернете эту проблему, и, хотя я обнаружил, что многие другие люди сталкиваются с этой проблемой, это не то же самое. У них проблемы с другими внешними ссылками, а не с теми, которые должны быть включены автоматически, например, с kernel32, lib32 и т. Д.

Я также попробовал решение, которое сработало для некоторых людей с их другими ссылками, и я включил путь (с кавычками и без них) к моему каталогу kernel32, но все же у меня такая же проблема, или в некоторых случаях я получу

LNK1104: невозможно открыть файл 'C: \ WINDOWS \ system32.obj'

с кавычками и без кавычек в конфиге компоновщика.

Кто-нибудь может помочь?


person Geoff    schedule 13.10.2010    source источник


Ответы (4)


Я думаю, что вариант, который вы здесь ищете, - это -MT вместо -MD. Я столкнулся с той же проблемой. Вы заметите, что при использовании этой опции размер DLL намного больше (включая зависимости).

person Tony    schedule 10.08.2011

Я включил путь (с кавычками и без них) к моему каталогу kernel32

Похоже, вы указываете на C:\Windows\System32, где может быть DLL, но не там, где будет файл .lib.

В VS 2010 это, вероятно, примерно так:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib

У меня нет готового доступа к VS2008, чтобы сказать, где по умолчанию устанавливается kernel32.lib для этого продукта.

person Michael Burr    schedule 13.10.2010
comment
Хорошо, это имеет больше смысла, но я попробовал это, и у меня такая же ошибка, только теперь она показывает LNK1104: невозможно открыть файл 'C: \ Program Files \ Microsoft SDKs \ windows \ v5.0 \ lib.obj' P.S. У меня только до v6.0A, и у этого нет каталога lib, только bin - person Geoff; 13.10.2010

В случае, если кто-то снова придет к этому, я нашел решение, которое сработало для меня.

В моем случае UAC из Win 7 и / или антивирусная программа для сортировки запрещала доступ к kernel32.lib. После запуска VS 2008 в качестве администратора и деактивации поиска вирусов для папок проекта это сработало для меня.

person nico    schedule 27.07.2012

У меня была эта проблема, и я ее решил. У меня был установлен SDK, однако VCVARS32.bat не смог найти SDK, поэтому по умолчанию использовались несуществующие пути (где установлен VS2008). Я заставил это работать, изменив VCVARS32.bat ("C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ vsvars32.bat", см. Строку 13):

11: @call :GetWindowsSdkDir
12:
*13: @SET WindowsSdkDir=C:\Program Files\Microsoft SDKs\Windows\v6.0A\
14:
15: @if not "%WindowsSdkDir%" == "" (

Мне пришлось сделать это таким образом, поскольку у меня установлены VS2008, VS2010 и VS2012, как, вероятно, делает большинство из нас, которым приходится поддерживать несколько проектов в нескольких командах, поэтому обновление чего-либо глобального, например фактического пути к среде, может привести к смешиванию версий SDK. .

person Kit10    schedule 24.06.2013