web-dev-qa-db-ja.com

ビジュアルスタジオ2010エクスプレス+勝利SDK =入力ファイル 'kernel32.lib'を開けません

私は以前、VS2008 ExpressとWin SDKを使用してx64用にコンパイルしていました。最近、マシンを再構築し(64ビットWindows 7にアップグレード)、最新のExpressをインストールしました。同じ手順に従って、x64ターゲットと私のソースがこれ以上リンクしないようにします。私が何をしても、私はいつも得ます:

リンク:致命的なエラーLNK1181:入力ファイル 'kernel32.lib'を開けません

おかしな32ビットコンパイルは問題なく動作します。

これはよく知られている問題ですか? Googleは、同じ問題についての2、3の言及だけに対処するための手がかりをくれませんでしたが、解決策はありませんでした。

Win 7 SDKでVS 2010を使用して64ビットをターゲットにすることは可能ですか?

ありがとう、パヴェル

20
pawel

解決策は最終的には非常に簡単でした。コツは、VSにSDKを勝ち取らせることです。これは、何らかの理由で私の場合は正しくありませんでした。 Project Properties -> VC++ Directories -> Library DirectoriesC:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64を指す必要があります

27
pawel

私が見つけた他の何か、これも非常に簡単ですが、プロジェクトのプロパティ->全般に移動し、プラットフォームツールセットをWindows7.1SDKに設定します。なぜこれが機能するのだろう...

12
Michael Litvin

私は同じ問題を抱えていて、ここでの回答が助けになりましたが、もっと多くのことをしなければなりませんでした。

Windows SDKインストールが破損しているため、C:\ Program Files\Microsoft SDKs\Windows\v7.1\Lib \にあるすべての.libファイルがありませんでした(内部のx64フォルダーは問題ありませんでした)。だから私は言われたことを追った here とそれを再インストールした。プラットフォームツールセットをWindows7.1SDKに設定できました(VS2010とVS2013の両方で)。

これは、Platform ToolsetがVisual Studio内の$(WindowsSdkDir)パスを変更するために機能します(保存されたパスはシステムレジストリにあります)。Kernel32.libが見つからない場合、このパスは壊れていました。

2
Eric O.

上記の解決策のいずれも機能しなかった場合。停止して健全性チェックを行います。間違って-G構成文字列と、この誤解を招くエラーが発生しました。

まず、VSコマンドプロンプトから実行しますnot通常のコマンドプロンプト。 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". ...

次に、Archが追加した適切な文字列withを選択しました。

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

サブディレクトリでcmakeを実行すると、そのディレクトリのすべてを削除できるため、「クリーン」を実行するのが簡単になります。

Visual Studio 15にアップグレードしましたが、注意を払っていなかったため、2012用に生成しようとしました。

1
TrophyGeek

FWIW、私はVisual Studio 2013で同じ問題を抱えていましたが、v8.1 SDKのインストール全体(ファイル+登録キー)がAWOLになったとき、おそらくEmborlandero RAD Studio。

WindowsSdkDir環境変数を設定しても、Studio自体(devenv.exe、環境はProcess Explorerで検査されます)とvcvarsall.batから呼び出されたバッチファイルから呼び出されたバッチファイルの両方がその変数を効果的に消去したため、効果がありませんでしたv8.1 SDKが見つからなかったためです。

Visual Studioでは、マシン固有のディレクトリをマシン全体に設定することはできません(このマシンの依存関係をすべてのプロジェクトファイルに含めるという提案は信じられないほど馬鹿げています)。v8.1SDKを再インストールすることはできませんでした。タイムリーに。その間にStudioを再び機能させるための簡単な修正は、下に文字列値InstallationFolderを追加することでした。

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

v8.0のいとこと同じ内容です。これはHKLM/Wow6432Nodeの下にありましたが、プレーンなHKLMまたはHKCUも機能するはずです。

これにより、再起動することなく、Studioがすぐに再び機能します。

0
DarthGizka