2013-02-24 117 views
29

Visual C++ 2010 Expressコンパイラで64ビットプログラミング用の.NET Framework SDKをインストールして以来、このエラーが発生しています。この単一のエラーのせいで、私は単純なプログラムでもコンパイルできません。私のプラットフォームはx86です。それは場合に役立ちます。ここのスナップショットである:私が言うことをもっと知らない致命的なエラーLNK1104:ファイル 'kernel32.lib'を開くことができません

enter image description here

。私はちょうどこのコンパイラを昨日ダウンロードし、うまくいきました。私は32ビットプログラミングから64ビットにアップグレードしたいので、アセンブリで作業できるので、SDKをダウンロードしました。私はGoogleで検索し、ここでもStackoverflowで検索しました。 Googleはそれほど助けにはならなかったが、投稿にはhereという似たようなものが見つかったが、答えはあまり正義をしなかった。誰もがこのエラーが発生している理由と私がそれを取り除く方法を知っていますか?

+2

私はこれを試したいと思います:最初にあなたのProgram Filesディレクトリにkernel32.libがインストールされているかどうかを確認し、プロジェクトのVC++ディレクトリのプロパティページにリストされているライブラリディレクトリをチェックし、 –

+0

これは、VS2017のインストールで複数のSDKをインストールした場合のパス混在によってトリガーされました。 VS2017インストーラを使用してすべてのWin10 SDKとツールセット(140と141)を削除し、インストールを更新してから、VS2017インストーラで再インストールしました。その後、問題は解決しました。 –

答えて

16

VS 2010では、VC++ディレクトリを確認してください。これはプロジェクトのプロパティにあります。 $(WindowsSdkDir)\libがディレクトリリストに含まれているかどうかを確認し、そうでなければ手動で追加します。 X64プラットフォーム用に構築する場合は、 "Platform" ComboBoxからX64を選択し、$(WindowsSdkDir)\lib\x64がディレクトリリストに含まれていることを確認してください。

+0

多くのディレクトリがあります。どれを追加するのかをどのように知るのですか?例えば、実行可能なディレクトリ、ディレクトリを含むものなどがあります。[ここにはスクリーンショットがあります](http://gyazo.com/2ee0b79d39dcbfde56d6417a4fc9260b)。 – 0x499602D2

+0

おそらくすべてを変更する必要があります。 sdkのBinディレクトリが実行可能ディレクトリのプロパティに入り、libディレクトリがライブラリに入ります。 –

+2

私はそれらを追加しましたが、私はまだ同じエラーを受けています。 – 0x499602D2

5

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

  • がインクルードディレクトリ:$(、インクルード)
  • リストアイテムライブラリディレクトリ:$(LibraryPath)
2

同様のエラーが発生しましたが、プロジェクトのプロパティで「リンカ - >入力 - >追加の依存関係」リストをチェックしても問題はなくなりました。私はセミコロンを欠いていた ";" "%(AdditionalDependencies)"の直前にあります。 私も同じエントリを2回持っていました。デバッグとリリースについては、このリストを個別に編集する必要があります。コマンドラインの場合

+0

+デバッグからリリース、またはWin32からx64に切り替えるときに設定が変更されることを私に思い出させるための投票。 Bah、このプロジェクト私は、あなたが何かをすることができる前に、多くの事前準備をしています。私は間違いを犯し、すべての値を微調整する前に正しい設定に切り替えるのを忘れました... –

5

(すなわち - メイクファイル)のユーザーのみ:

  1. あなたはVC++ Expressをインストール

    が、それは32ビットのみです。だから、C:¥Program Files (x86)になります。
  2. 次に、64ビットcapabillitiesにアップグレードすることにしました。したがって、SDKをインストールします。しかし、64ビット対応です。したがって、内容はC:¥Program Filesになります。今、あなたは上記の、#2にそのチューニングを変更する必要があり、

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

    をしかし:

は、(私のような)あなたは、おそらくこのような何かを経由して、上記#1のために、メイクファイルを "調整します" 、次のように:

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

( "v7.0A" のほかに "V7.1" の変化を、お見逃しなく。)

18

変更するには、プラットフォームツールセット: "Windows7.1SDK" の下にプロジェクトのプロパティ - > conf igurationプロパティ - >一般

+4

これは、私。私はいくつかのツールをインストールしていましたが、私がVC++プロジェクトに戻ったとき、コンパイルできませんでした(ヘッダーがないなど)。コードパスを手に入れ始めたので、リンクエラーが発生しました私が言ったように、この解決策を試しました、それはちょうど働いた!!どうもありがとう。 – Edward

+2

これはなぜ機能しますか?それは何をするためのものか? – Sqeaky

0

enter image description here

下呂のソリューションは、私のために働きました。
Visual Studio 2012では、次の手順を実行します。
- ソリューションエクスプローラ
に行く - 右プロジェクトに
をクリックする - 上記の場合Windows7.1SDKへ>変更

0

- 設定のプロパティ - - >一般
- プラットフォームツールセットのプロパティ
に行きますソリューションが動作しない場合は、$(LibraryPath)が[プロパティ] - > [VC++ディレクトリ] - > [ライブラリディレクトリ]にあるかどうかを確認してください。あなたがそれを見逃している場合は、それを追加してみてください。

2

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

は::行く

C:\プログラムファイルのMicrosoftのSDK \ Windowsの\ v7.1A \ Libの\(x86の);

私のシステムは勝利-7、64、VS 2013、.NET Frameworkの4.5

0

OSです:Win10、Visual Studioの2015

ソリューション: Goはパネルを制御する--->アンインストールプログラム--- MSヴィジュアルスタジオ---->変更---->修理

修理してください。 修理が完了するまでインターネットに接続する必要があります。

幸運。

1

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

最初にWindows SDKをアンインストールする必要がありました(インストールされているバージョンは2つありました)。その後、実行可能ファイルを実行します。インストールが完了したら、Visual Studioを起動して正常に動作しました。

0

今日、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つの異なるファイルを持っている)に設定されたとおり、私は、「インストールとして」バッチファイル&hellipの1つを変更するには消極的だとして

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

。そのバッチファイルが別のさらに別のを呼び出すさらにとして:のような「ライブラリディレクトリ」の合計の文字列を;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86

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

...代わりに私の具体的なC++のコマンドラインアプリのために、私は単に明示的なパスのテキストを追加しましたこれは$(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'ファイルを開くことができません"エラー。私はそのヒントをthis GitHub issueで見つけました。

「修復」インストール&hellipが正常に実行された後でも、これはVisual Studio 2017 Enterprise 2017バージョン15.1(26403.0)で再現可能です。新しいVisual C++ Win32コンソールアプリケーションを作成してコンパイルしようとするとき。

実際、空のアプリケーションが作成されない限り、デフォルトテンプレートには<SDKDDKVer.h>への参照が含まれており、この追加エラー:Error (active) E1696 cannot open source file "SDKDDKVer.h"が表示されます。だから私はcreated an empty C++ projectです。

0

の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)は、上記選択されたバージョン番号とパスを持っていることを示しています。

関連する問題