はじめに
『Windowsカーネルドライバプログラミング』とは、Windows上で動作するカーネルドライバの開発方法について実践的に学べる書籍だ。
1 章はWindowsの構成要素についての解説がされていたが、2 章からは実際に WDK などのインストールを行い、サンプルアプリを作成していく。
そこでビルドが通らなくなってしまいハマったので備忘録として記事に残すことにした。
動作確認環境
Windows 10 Home 22H2
Visual Studio Installer v2.11.69.53063
Visual Studio Community 2019 v16.11.20
いきなり本題
p.27 で翻訳者からの注釈があるが、書籍に書かれている通りに進めていくと、サンプルアプリを初めてビルドしてみる段階で Spectre の軽減対策関連のビルドエラーが発生してしまう。
Visual Studio のコンソールに書かれているエラーログを読むと、詳細は以下のページに書かれているという。
https://learn.microsoft.com/ja-jp/cpp/build/reference/qspectre?view=msvc-160
読んでみると、コンパイルオプションとして、/Qspectre を指定するには Visual Studio Installer 経由で別途ライブラリをインストールする必要があるらしい。
上記の公式ページの名前で検索すると、おそらく言語設定の問題だが、検索に引っかからない。
なので、自分の環境ではこれをインストールすればよいという対応表を残す。
同じようにハマった人がもしこの記事に辿り着いたら参考にしてみてほしい。
公式ページの記載 | Visual Studio Installer での該当コンポーネント名 |
---|---|
MSVC version version_numbers Libs for Spectre [(x86 and x64)|(ARM)|(ARM64)] | MSVC version - VS 2019 C++ [x86/x64|ARM|(ARM64)] Spectre 軽減ライブラリ(version_numbers) |
Visual C++ ALT for [(x86 and x64)|(ARM)|(ARM64)] with Spectre Mitigations | Spectreの軽減策を含む、[version_numbers] ビルドツール用 C++ ATL ([(x86およびx64)|(ARM)|(ARM64)]) |
Visual C++ MFC for [(x86 and x64)|(ARM)|(ARM64)] with Spectre Mitigations | Spectreの軽減策を含む、[version_numbers] ビルドツール用 C++ MFC ([(x86およびx64)|(ARM)|(ARM64)]) |
バージョンに関しては各々インストールしているものが違うと思うので、各自調べて該当するものを探してほしい。
※日本語ページならコンポーネント名も日本語版にしてくれと思うのは傲慢だろうか…?
上にあげた 3 つのコンポーネントを「個別のコンポーネント」欄から検索してインストールしたら無事ビルドに成功した。
まぁ原著が少し古いみたいだからこういうことはあるんだろうなぁ。
話は面白いし、内容も濃いのでしっかり食らいついていきたい。
おわりに
何か間違いや別の解決方法を見つけたらぜひコメントに残してくれると嬉しい限りである。
今回はとても短い記事になってしまったが、また次の機会にお会いしよう。
ばいちゃ!