web-dev-qa-db-ja.com

Windows SDKレジストリ変数が見つかりません

Visual Studio 2012でプロジェクトをビルドできません。エラーは次のとおりです。

1> C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(344,5):警告MSB8003:レジストリからWindowsSDKDir変数が見つかりませんでした。 TargetFrameworkVersionまたはPlatformToolsetが無効なバージョン番号に設定されている可能性があります。」

Windows SDKをインストールし、再インストールと修復を試みました。レジストリ文字列キー「WindowsSDKDir」をレジストリに入力しようとしました。 (HKLM/SOFTWARE/Wow6432Node/Microsoft/Microsoft SDKs/v7.1 with C:\ Program Files\Microsoft SDKs\Windows\v7.1).`

それはレジストリの問題ですか、それとも何か他のものですか?これらのレジストリキーを検索して、Windows SDKを再インストールしようとしましたが、どちらも役に立ちませんでした。

22
clashoftornados

Script Hook V-GTA .NET Library用にコンパイルするスクリプトを取得しようとしていました。

なぜ機能しないのかを理解しようとして約2時間費やしました。ここに私がそれを構築する方法があります:

プロジェクトを右クリックし、プロパティを選択しました:

Step1

[構成プロパティ]-> [全般]-> [プラットフォームツールセット]

ドロップダウンを選択し、使用可能な他の1つだけを選択しました

(私にとってはVisual Studio 2013-Windows XP(v120_xp))

Platform Toolset

その後、私は自分の車を普通に飛ばすことができました。

Weeee

これが他の誰かが同じことをしようとしているのを助けることを願っています。

12
user1274820

Visual Studio 2013でも同じ問題が発生しました(サービスパックがインストールされていません)。インストール中にアクティブなインターネット接続が必要か、sdk-pathが欠落しているようです。

コントロールパネル/プログラム/プログラムと機能に移動して、[Microsoft Visual Studio xxx 2013]を選択し、右クリックして[変更]を選択します。数分かかりますが、その後、sdk-pathは正しいです。

10
kalmiya

特定のNode.jsパッケージをインストールしようとすると、最近この問題が発生しています! I 最終的にレジストリ変数に正しいパスを追加して修正しました!

これを修正する最も簡単な方法は、簡単なスクリプトで設定することです。

_Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows]
"CurrentInstallFolder"="C:\\Program Files (x86)\\Windows Kits\\8.1\\"
_

これにより、Windows 8.1 64ビットユーザー用に修正されますが、Windows SDKを別のディレクトリにインストールしている場合は、C:\Program Files (x86)\Windows Kits\8.1をそれぞれのディレクトリに置き換えるだけです。試すことができる場所は次のとおりです。

  • C:\ Program Files(x86)\ Windows Kits
  • C:\ Program Files(x86)\ Microsoft SDKs\Windows
  • C:\ Program Files(x86)\ Microsoft\Microsoft SDKs\Windows

注:パスの最後にも必ずバージョンを追加してください。たとえば、_8.1_は私のパスの最後にあります。基本的には、Windows SDKへのフルパスを取得する必要があり、not Windows SDKのメインフォルダーを含むフォルダーのみです。

9
CoolOppo

Parvezが指摘したように、新しいC++プロジェクト、「WindowsのインストールXP C++のサポート」」

enter image description here

5
osexp2003

コマンドプロンプトでSetEnv.cmdを手動で起動してみてください。

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\Setenv.cmd" /Release /x86

OR

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\Setenv.cmd" /Release /x64
3
Ruslan

Windows SDK v8.1をインストールすると解決しました。

2
James Vespa

私はこれを動作します:

「your」.vcxproj <PlatformToolset>"some version"</PlatformToolset>の値を確認します

私はそれが奇妙であることを知っていますが:

VC2012およびVC2010をインストールし、ツールセット「v110」を使用して2010年に2012年からプロジェクトをコンパイルしました。

2
Lesanus

npm install oracledbを使用してnodejs用のOracleドライバーをインストールしようとしたときに、次のエラーが表示されました。 Windows 7.1 SP1を使用しており、Visual Studio 2015コミュニティエディションをインストールしました。

C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(366,5):MSB8003の警告:レジストリからWindowsSDKDir変数が見つかりませんでした。 TargetFrameworkVersionまたはPlatformToolsetが無効なバージョン番号に設定されている可能性があります。

前述のようにVC++コンパイラをインストールすると here が問題を解決しました。参考のために、ここで実行するアクションを示します。

Visual Studioを起動する必要があります。次に、ファイル>新規>プロジェクトを開き、開いたウィンドウで[モデル]> [Visual C++]を選択します。ウィンドウの中央に[Microsoft C++のインストール]ボタンなどが表示されます。 、それをクリックすると、C++およびMicrosoft SDKのインストールプロセスが起動します。それが完了すると、期待どおりに動作します!

1
Parvez

VS2012でも同じ問題が発生しました。私はマシンに2013と2012の両方をインストールしており、VS2013をアンインストールした後に問題が発生しました(ライセンスの期限切れのためにもう使用していませんでした)。

上記のリンクにあるレジストリキーは役に立ちませんでした。私の意見では、あなたのVSバージョンとは関係なく、これに対処する最も安全な方法は、VSがそれらのマクロをロードするために使用するバッチファイルを見つけることですVCVarsQueryRegistry.bat in C:\Program Files(x86)\ Microsoft Visual Studio [YOUR_VERSION] .0\Common7\Tools.

定義されていないことを示す変数VSを探します。次のようなスニペットを見つけることができます。

@set WindowsSdkDir=
@call :GetWindowsSdkDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKCU > nul 2>&1
@exit /B 0

:GetWindowsSdkDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)
@if "%WindowsSdkDir%"=="" exit /B 1
@exit /B 0

:GetWindowsSdkDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)

64ビットシステムのWindowsSdkDirは、レジストリ値SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0\InstallationFolderのいずれかで設定されていることを明確にしますHKEY_CURRENT_USERまたは- HKEY_LOCAL_MACHINE設定に応じて。

1
Neenster

私も同じ問題に直面していました。

Windows SDK v8.1をインストールすると解決しました。

https://msdn.Microsoft.com/en-us/windows/desktop/bg162891.aspx

1
Pawan Agrawal

同じエラーを報告する同様の問題の私の観察を追加します...

必要なSDKがインストールされていても問題が解決しない場合は、プロジェクトのGeneral構成プロパティでPlatform Toolsetを切り替えてみてください。たとえば、Visual Studio 2013(v120)Visual Studio 2015(v140)に変更しました。適用後、Platform ToolsetVisual Studio 2013(v120)に戻し、欠落しているWindowsSDKDirの問題を修正しました設定。

プロジェクトが機能する別のワークステーションに、VS2012がインストールされます。 VS2012のない新しいワークステーションは、欠落しているWindowsSDKDir設定について文句を言います。ただし、Platform ToolsetパラメーターにはVisual Studio 2013(v120)と表示されます

0
bvj