ti-enxame.com

erro fatal LNK1104: não é possível abrir o arquivo 'kernel32.lib'

Eu tenho recebido esse erro desde que eu instalei o SDK do .NET Framework para programação de 64 bits no meu compilador Visual C++ 2010 Express. Eu não consigo compilar nem mesmo um programa simples por causa desse único erro que estou recebendo. Minha plataforma é x86. Aqui está um instantâneo se isso ajuda:

enter image description here

Eu não sei mais o que dizer. Acabei de baixar este compilador ontem e estava funcionando bem. Eu queria atualizar da programação de 32 bits para 64 bits para que eu pudesse trabalhar com o Assembly, então baixei este arquivo SDK . Eu procurei no Google e até aqui no Stackoverflow. O Google não ajudou muito, mas achei um post aqui que parecia semelhante ao meu, mas as respostas não fizeram muita justiça. Alguém sabe por que esse erro está ocorrendo e como posso me livrar dele?

29
0x499602D2

Verifique os diretórios do VC++, no VS 2010, eles podem ser encontrados nas propriedades do seu projeto. Verifique se $(WindowsSdkDir)\lib está incluído na lista de diretórios, se não, adicione-o manualmente. Se você está construindo para a plataforma X64, você deve selecionar X64 na caixa de combinação "Plataforma" e verificar se $(WindowsSdkDir)\lib\x64 está incluído na lista de diretórios.

16
Zaid Amir

Altere o conjunto de ferramentas da plataforma para: "Windows7.1SDK" nas propriedades do projeto-> propriedades de configuração-> geral

18
gero

Verifique se você tem em diretórios VC++ (clique com o botão direito do mouse no projeto, clique em Property Page),

  • Incluir diretórios: $ (IncludePath) 
  • Item da lista Diretórios da Biblioteca: $ (LibraryPath)
5
namar0x0309

Para linha de comando (isto é, - makefile) apenas usuários:

  1. Quando você instala o VC++ Express, é somente de 32 bits. Então, as coisas vão para C:\Arquivos de Programas (x86).
  2. Em seguida, você decide atualizar para as capacidades de 64 bits. Então, você instala o SDK. Mas é capaz de 64 bits. Então, as coisas vão para C:\Program Files.

Você (como eu) provavelmente "afinou" seu makefile para # 1, acima, por meio de algo como isto:

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

Mas, agora, você precisa mudar o ajuste para # 2, acima, assim:

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

(Não perca também a alteração "v7.0A" para "v7.1").

5
dbanas

Adicione o caminho da lib de WindowsSdks em project-> properties-> Configuration Properties-> diretórios VC++ -> diretórios Library.

Eu adicionei seguindo caminho e erro vai ::

C:\Arquivos de programas (x86)\Microsoft SDKs\Windows\v7.1A\Lib;

Meu sistema é Win-7, 64bit, VS 2013, .net framework 4.5

3
Ujjaval Moradiya

Eu recebi um erro semelhante, o problema parou quando eu chequei minha lista "Linker -> Input -> Dependências Adicionais" nas propriedades do projeto. Eu estava faltando um ponto e vírgula ";" pouco antes de "% (AdditionalDependencies)". Eu também tive a mesma entrada duas vezes. Você deve editar essa lista separadamente para Depurar e Liberar.

2
user3011594

Eu tive um problema diferente no Windows 10 com o Visual Studio 2017, mas com os mesmos efeitos. Eu acho que meus problemas se resumem ao VS ser instalado em uma unidade diferente de "C: \". Eu resolvi o problema Reinstalando Windows 10 SDK

Primeiro eu tive que desinstalar o SDK do Windows (havia duas versões instaladas). Em seguida, executei o executável. Uma vez instalado, correu visual studio e funcionou bem. 

1
Malcor

SO: Win10, Visual Studio 2015

Solução: Vá ao painel de controle ---> programa de desinstalação --- MSvisual studio ----> alterar ----> organize = repair 

e conserte-o. Note que você deve se conectar à internet até que o reparo termine.

Boa sorte.

0
sa1

Se a solução acima não funcionar, verifique se você tem $ (LibraryPath) em Properties-> VC++ Directories-> Library Directories. Se você está perdendo, tente adicioná-lo.

0
SpicyWeenie

Acabei de conhecer e resolvi esse problema sozinho. Meu problema é um pouco diferente. Estou usando o visual studio no Windows 10. Quando eu crio o projeto, o Target Platform Version foi automaticamente configurado para 10.0.15063.0. Mas não há kernel32.lib para esta versão do SDK, nem outros arquivos de cabeçalho e arquivos de lib. Necessários. Então eu modifiquei o Target Platform Version para 8.1. E funcionou.

Meio Ambiente :

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

Solução :

  1. Abra o Property Page do projeto;
  2. Navegue para a página General;
  3. Modifique Target Platform Version para a plataforma de destino desejada (por exemplo, 8.1).
0
cosmozhang

enter image description here

a solução de gero funcionou para mim.
No Visual Studios 2012, siga os seguintes passos.
- Vá para o Solution Explorer
- Clique com o botão direito no seu projeto
- Ir para propriedades
- Propriedades de Configuração -> Geral
- Plataforma Toolset -> mudar para o Windows7.1SDK

0
Trevor Hickey

Hoje, no Visual Studio 2017, tive o mesmo problema. 

A causa no meu caso acabou por ser uma configuração de ambiente ruim no NETFXSDKDir (NETFXSDKDir=C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1). Precisa ser em vez de NETFXSDKDir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86. Especificamente, conforme definido neste arquivo em lotes (meu diretório possui 4 arquivos diferentes) para o prompt de comando do VS2017:

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

como eu estou relutante em mudar um dos arquivos em lote "como instalados" ... ainda mais que o arquivo em lote chama outro ainda:

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

... em vez do meu aplicativo de linha de comando específico do C++, simplesmente adicionei o texto do caminho explícito: ;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86 para uma string total em "Diretórios de biblioteca" como este: $(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86. (Clique com o botão direito do mouse no projeto, Propriedades → Propriedades de Configuração → Diretórios do VC++ → Diretórios de Biblioteca.) Isso resolveu meu erro "erro fatal LNK1104: não é possível abrir o arquivo 'kernel32.lib'". Eu encontrei essa dica em essa questão do GitHub .

Observe que isso é reproduzível no Visual Studio 2017 Enterprise 2017 versão 15.1 (26403.0) mesmo após a instalação bem-sucedida do "reparo" ... ao criar um novo aplicativo de console do Visual C++ Win32 e tentar compilar.

Na verdade, a menos que um aplicativo em branco seja criado, o modelo padrão também inclui uma referência a <SDKDDKVer.h> e, com isso, recebo esse erro adicional: Error (active) E1696 cannot open source file "SDKDDKVer.h". Então eu criei um projeto C++ vazio .

0
gojimmypi