Windowsキットとは何ですか?どのように機能しますか?

ニュートリノ

VisualStudioのWindowsでC ++プロジェクトを開発する昔は、VisualStudioバージョンには独自のバージョンのCおよびC ++ライブラリがあり、プロジェクトはアクセス用のヘッダーにアクセスするために特定のバージョンのWindowsSDKを参照していました。 Win32プラットフォームに。複数のバージョンのWindowsSDKがインストールされている場合、環境変数を含む複雑なシステムがあり、Windows SDK VisualStudioのどのバージョンをデフォルトで使用するかを選択できます。

それは素晴らしくなく、それを適切に機能させるには少し掘り下げる必要がありましたが、それはほぼ機能しました。

VS2012からVS2015にアップグレードしたばかりで、このシステムに置き換えられたものはすべて完全に壊れているか、理解していないようです。

  1. conio.hを含む単純なVS2012C ++コンソールアプリをVS2015にアップグレードすると、エラーは報告されずに中断します。どうして?conio.hはVisualStudio C / C ++ライブラリに含まれなくなり、代わりにWindows Kit 10に含まれるようになりました。プロジェクトをアップグレードしても、使用されているSDKが再インストールされません(予想どおり)。

  2. VS2015で新しいHelloWorld C ++アプリを作成すると、C ++プロジェクトのインクルードディレクトリは$(VC_IncludePath)と$(WindowsSDK_IncludePath)を継承します。$(WindowsSDK_IncludePath)はC:\ Program Files(x86)\ Windows Kits \ 8.1からヘッダーをプルし、$(VC_IncludePath)はC:\ Program Files(x86)\ Windows Kits \ 10からヘッダーをプルします。

そのため、単純なプロジェクトのアップグレードは失敗し、アップグレードでエラーは報告されません。クリーンな新しいコンソールプロジェクトは、2つの異なるWindows Kitインストールから同時にヘッダーをプルします。C:\ ProgramFiles(x86)\ Microsoft SDKsとC:\ Program Files(x86)\ WindowsKitsの下に8.1と10のエントリがあります。Windowsキット8.1にはWin32ヘッダーとWinRtヘッダーが含まれ、Windowsキット10にはC / C ++ヘッダーが含まれています。

インストールが正しく構成されておらず、破損していますか?それとも、これが想定どおりに混乱していますか?

この混乱が本来あるべき姿である場合、これはどのように機能することを意図していますか?私はMSDNでWindowsKitsに関する情報を検索しようとしましたが、以前はまったく異なるものであったWindows Driver Kitに関するもの以外は何も見つかりませんでしたが、それがまだあるかどうかはわかりません。

このライブラリ構成の背後にある理論的根拠と、それがどのように使用されることを意図しているかを説明する、私が見逃したドキュメントはありますか?

ニュートリノ

VS2012からVS2015にアップグレードされたプロジェクトのヘッダーファイルとライブラリの依存関係の両方を解決する問題で、この問題のいくつかの異なるバリエーションに何度か遭遇しました。

私の質問に対するハンスのコメントは確かにヘッダーの問題を修正しますが、ライブラリの依存関係で同じ問題が発生した後、失敗したライブラリの依存関係の解決にも機能するより簡単な解決策があるかもしれません。

VS2015でVS2012プロジェクトを開くと、自動アップグレードは実行されません。プロジェクトのプロパティを開き、[一般]-> [プラットフォームツールセット]を[VisualStudio 2015(v140)]に変更すると、元の質問で説明したヘッダー解決エラーのバリアントまたは別のライブラリ依存関係解決エラーが再現される可能性があります。

これらを修正するために私が見つけた最も簡単な方法は、プロジェクトプロパティを開き、[VC ++ディレクトリ]-> [ディレクトリを含める]に移動することです。プロジェクトに自分で追加したパスの中には、おそらく$(VCInstallDir)\ include; $(VCInstallDir \ atlmfc \ include; $(WindowsSDK_IncludePath)があります。

パスをクリックしてドロップダウンを表示し、[編集]をクリックします。これにより、上から下に、明示的に定義されたパス、評価されたパス、および継承されたパスの3つのセクションを含むダイアログが表示されます。一番下にあるのは、「親またはプロジェクトのデフォルトから継承する」チェックボックスです。これは、最初はオフになっていることが常にわかっています。

明示的に定義されたインクルードパスから、上記の$(VCInstallDir)\ include; $(VCInstallDir \ atlmfc \ include; $(WindowsSDK_IncludePath)エントリを削除し、[親またはプロジェクトのデフォルトから継承]設定を選択します。これにより、ヘッダーファイルの依存関係が解決されます。問題。

ライブラリ参照の問題もある場合は、ライブラリディレクトリエントリで同じことを行い、設定を編集し、明示的なプラットフォームエントリを削除して、[親またはプロジェクトのデフォルトから継承]を選択します。(リンカーエラーが表示されない場合でも、これを行うことをお勧めします。そうしないと、VS2012のライブラリにリンクしているときにVS2015のプラットフォームツールセットコンパイラオプションを使用することになります)。

同様の問題を抱えている人に出会ったことがないのに、なぜこれが台無しになっているのかわかりません。これまでVisualStudioソリューションのアップグレードに問題はありませんでした。

また、以前はSDKに常にプラットフォームヘッダーが含まれていましたが、C ++ヘッダーは常に一部であったか、Visual Studioのインストールであったのに、Windowsキットの一部のバージョンにWindowsプラットフォームヘッダーまたはC ++ライブラリヘッダーが含まれるようになった理由もわかりません。このような変更には、それに関する開発ブログまたは他のドキュメントが必要なようです。しかし、それが機能する限り、私はあまり気にしません。

これが誰かに役立つことを願っています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AngularJSの「トラックバイ」とは何ですか?どのように機能しますか?

分類Dev

「umask」とは何ですか?どのように機能しますか?

分類Dev

Ember RunLoopとは何ですか?どのように機能しますか?

分類Dev

scope。$ new(true)とは何ですか?どのように機能しますか

分類Dev

setReplaceMethod()とは何ですか?どのように機能しますか?

分類Dev

「Steam」とは何ですか?どのように機能しますか?

分類Dev

「umask」とは何ですか?どのように機能しますか?

分類Dev

GenericTypeResolverとは何ですか?どのように機能しますか?

分類Dev

スキムリンクスコープとは何ですか?どのように機能しますか

分類Dev

スキムリンクスコープとは何ですか?どのように機能しますか

分類Dev

セッションとは何ですか?それらはどのように機能しますか?

分類Dev

spark.streaming.receiver.maxRateとは何ですか?バッチ間隔でどのように機能しますか

分類Dev

プロセッサのLock#信号とは何ですか?どのように機能しますか?

分類Dev

ビットごとのシフト(ビットシフト)演算子とは何ですか?それらはどのように機能しますか?

分類Dev

ジップツリーとは何ですか?どのように機能しますか?

分類Dev

ジップツリーとは何ですか?どのように機能しますか?

分類Dev

ハイパースレッディングとは何ですか?どのように機能しますか?

分類Dev

オンラインアカウントとは何ですか?どのように機能しますか?

分類Dev

Android Studioリポジトリとは何ですか?どのように機能しますか

分類Dev

NoSQLとは何ですか、どのように機能し、どのようなメリットがありますか?

分類Dev

URLはどのように機能しますか?そして、GETとPOSTとの関係は何ですか?

分類Dev

awkの^(キャレット)除外はどのように機能しますか?

分類Dev

clangはWindowsでどのように機能しますか?

分類Dev

Sparkでのキャッシュはどのように機能しますか

分類Dev

gitlab-ciキャッシュはdockerrunnerでどのように機能していますか?/ cacheディレクトリとは何ですか?cache_dirとは何ですか?

分類Dev

Haskellでは型キャストはどのように機能しますか?

分類Dev

この並べ替えメソッドの名前は何ですか?どのように機能し、どのようにArrays.sort()と比較しますか?

分類Dev

Windows 10アップデートはどのように機能しますか?

分類Dev

golangでの型キャストはどのように機能しますか?

Related 関連記事

  1. 1

    AngularJSの「トラックバイ」とは何ですか?どのように機能しますか?

  2. 2

    「umask」とは何ですか?どのように機能しますか?

  3. 3

    Ember RunLoopとは何ですか?どのように機能しますか?

  4. 4

    scope。$ new(true)とは何ですか?どのように機能しますか

  5. 5

    setReplaceMethod()とは何ですか?どのように機能しますか?

  6. 6

    「Steam」とは何ですか?どのように機能しますか?

  7. 7

    「umask」とは何ですか?どのように機能しますか?

  8. 8

    GenericTypeResolverとは何ですか?どのように機能しますか?

  9. 9

    スキムリンクスコープとは何ですか?どのように機能しますか

  10. 10

    スキムリンクスコープとは何ですか?どのように機能しますか

  11. 11

    セッションとは何ですか?それらはどのように機能しますか?

  12. 12

    spark.streaming.receiver.maxRateとは何ですか?バッチ間隔でどのように機能しますか

  13. 13

    プロセッサのLock#信号とは何ですか?どのように機能しますか?

  14. 14

    ビットごとのシフト(ビットシフト)演算子とは何ですか?それらはどのように機能しますか?

  15. 15

    ジップツリーとは何ですか?どのように機能しますか?

  16. 16

    ジップツリーとは何ですか?どのように機能しますか?

  17. 17

    ハイパースレッディングとは何ですか?どのように機能しますか?

  18. 18

    オンラインアカウントとは何ですか?どのように機能しますか?

  19. 19

    Android Studioリポジトリとは何ですか?どのように機能しますか

  20. 20

    NoSQLとは何ですか、どのように機能し、どのようなメリットがありますか?

  21. 21

    URLはどのように機能しますか?そして、GETとPOSTとの関係は何ですか?

  22. 22

    awkの^(キャレット)除外はどのように機能しますか?

  23. 23

    clangはWindowsでどのように機能しますか?

  24. 24

    Sparkでのキャッシュはどのように機能しますか

  25. 25

    gitlab-ciキャッシュはdockerrunnerでどのように機能していますか?/ cacheディレクトリとは何ですか?cache_dirとは何ですか?

  26. 26

    Haskellでは型キャストはどのように機能しますか?

  27. 27

    この並べ替えメソッドの名前は何ですか?どのように機能し、どのようにArrays.sort()と比較しますか?

  28. 28

    Windows 10アップデートはどのように機能しますか?

  29. 29

    golangでの型キャストはどのように機能しますか?

ホットタグ

アーカイブ