web-dev-qa-db-ja.com

致命的なエラーLNK1104:ファイル 'kernel32.lib'を開けません

Visual C++ 2010 Expressコンパイラに64ビットプログラミング用の.NET Framework SDKをインストールして以来、このエラーが発生しています。この単一のエラーが発生しているため、単純なプログラムでさえコンパイルできません。私のプラットフォームはx86です。これが役立つ場合のスナップショットは次のとおりです。

enter image description here

私はこれ以上何を言うべきかわかりません。昨日、このコンパイラをダウンロードしたところ、うまく機能していました。 Assemblyで作業できるように32ビットプログラミングから64ビットにアップグレードしたかったので、これをダウンロードしました [〜#〜] sdk [〜#〜] 。 Googleで検索し、ここStackoverflowで検索しました。 Googleはあまり役に立ちませんでしたが、私は投稿を見つけました こちら これは私のものに似ているように見えましたが、答えはあまり正義ではありませんでした。なぜこのエラーが発生しているのか、どうすれば取り除くことができるのか知っていますか?

29
0x499602D2

VC++ディレクトリを確認してください。VS2010では、これらはプロジェクトプロパティにあります。 $(WindowsSdkDir)\libがディレクトリリストに含まれているかどうかを確認し、含まれていない場合は手動で追加します。 X64プラットフォーム用にビルドする場合は、「プラットフォーム」コンボボックスからX64を選択し、$(WindowsSdkDir)\lib\x64がディレクトリリストに含まれていることを確認してください。

17
Zaid Amir

プラットフォームツールセットを、プロジェクトプロパティ->構成プロパティ->一般の「Windows7.1SDK」に変更します。

18
gero

VC++ディレクトリ(プロジェクトを右クリック、プロパティページをクリック)にあることを確認してください。

  • ディレクトリを含める:$(IncludePath)
  • リストアイテムライブラリディレクトリ:$(LibraryPath)
5
namar0x0309

コマンドライン(つまり-makefile)ユーザーのみ:

  1. VC++ Expressをインストールすると、32ビットのみになります。したがって、物事はC:\ Program Files (x86)に入ります。
  2. 次に、64ビット機能にアップグレードすることにします。したがって、SDKをインストールします。ただし、64ビット対応です。したがって、物事はC:\ Program Filesに入ります。

あなたは(私のように)おそらく次のような方法で、メイクファイルを#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」から「v7.1」への変更もお見逃しなく。)

5
dbanas

プロジェクト->プロパティ->構成プロパティ-> VC++ディレクトリ-> ライブラリディレクトリにWindowsSdkのlibパスを追加します。

私は次のパスを追加し、エラーが発生しました::

C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.1A\Lib;

私のシステムはWin-7、64bit、VS 2013、.net framework 4.5

3

同様のエラーが発生しました。プロジェクトプロパティの[リンカー->入力->追加の依存関係]リストをチェックすると、問題は停止しました。セミコロン「;」が欠落していました「%(AdditionalDependencies)」の直前。また、同じエントリを2回取得しました。このリストは、デバッグ用とリリース用に別々に編集する必要があります。

2
user3011594

Visual Studio 2017を搭載したWindows 10では異なる問題がありましたが、同じ効果がありました。私の問題は、VSが「C:\」以外のドライブにインストールされたためだと思います。再インストールして問題を解決しました Windows 10 SDK

最初に、Windows SDKをアンインストールする必要がありました(2つのバージョンがインストールされていました)。次に、実行可能ファイルを実行しました。一度インストールすると、Visual Studioが実行され、正常に機能しました。

1
Malcor

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)には、上記で選択したバージョン番号のパスがあります。

0
Sunsetquest

OS:Win10、Visual Studio 2015

解決策:コントロールパネルに移動--->プログラムをアンインストール--- MSvisual studio ---->変更----> organize = repair

そしてそれを修復します。修復が完了するまでインターネットに接続する必要があることに注意してください。

幸運を。

0
sa1

上記の解決策が機能しない場合は、Properties-> VC++ Directories-> Library Directoriesに$(LibraryPath)があるかどうかを確認してください。不足している場合は、追加してみてください。

0
SpicyWeenie

私は自分でこの問題に出会い、解決しました。私の問題は少し異なります。 Windows 10でVisual Studioを使用しています。プロジェクトを作成すると、Target Platform Versionは自動的に10.0.15063.0に設定されました。ただし、このバージョンのSDKにはkernel32.libはなく、他の必要なヘッダーファイルとlibファイルもありません。そこで、Target Platform Version8.1に変更しました。そしてそれは働いた。

環境

  • ウインドウズ10
  • Visual Studio 2015
  • Visual C++

ソリューション

  1. プロジェクトのProperty Page;を開きます
  2. Generalページに移動します。
  3. Target Platform Versionを目的のターゲットプラットフォームに変更します(例:8.1)。
0
cosmozhang

enter image description here

geroのソリューションがうまくいきました。
Visual Studios 2012では、次の手順を実行します。
-ソリューションエクスプローラーに移動
-プロジェクトを右クリックします
-プロパティに移動
-構成プロパティ->一般
-プラットフォームツールセット-> Windows7.1SDKに変更

0
Trevor Hickey

今日、Visual Studio 2017では同じ問題が発生しました。

私の場合の原因は、NETFXSDKDir(NETFXSDKDir=C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1)の不適切な環境設定であることが判明しました。代わりにNETFXSDKDir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86にする必要があります。具体的には、VS2017のコマンドプロンプト用のこのバッチファイル(私のディレクトリには実際に4つの異なるファイルがあります)で設定されているように:

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

「インストールされたままの」バッチファイルの1つを変更することに消極的です。さらに、そのバッチファイルが別のバッチファイルを呼び出すため、

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

...特定のC++コマンドラインアプリの代わりに、明示的なパステキストを追加しました:;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86このような「ライブラリディレクトリ」の合計文字列:$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86。 (プロジェクト、プロパティ→構成プロパティ→VC++ディレクトリ→ライブラリディレクトリを右クリックします。)これにより、「致命的なエラーLNK1104:ファイル 'kernel32.lib'を開けません」エラーが解決しました。 このGitHubの問題 でヒントを見つけました。

これは、Visual Studio 2017 Enterprise 2017バージョン15.1(26403.0)で「修復」インストールが成功した後でも、新しいVisual C++ Win32コンソールアプリケーションを作成してコンパイルしようとした場合でも再現可能であることに注意してください。

実際、空のアプリケーションが作成されない限り、デフォルトのテンプレートには_<SDKDDKVer.h>_への参照も含まれており、これにより追加のエラーError (active) E1696 cannot open source file "SDKDDKVer.h"が発生します。だから私は 空のC++プロジェクトを作成した

0
gojimmypi