LoginSignup
2
1

More than 1 year has passed since last update.

Visual Studio 2022 Communityでのatlbase.hが見つからないエラーの解決方法

Posted at

はじめに

Active Template Library(ATL)は,ActiveXコントロールの作成に使われるライブラリです。
例えばC++でATLを使ってActiveXのDLLを作成し,C#やほかの言語から利用することが可能になります。

しかし,Visual Studio Communityでは,デフォルトのインストールでATLが入っていません。
そのため,ATLを利用するプロジェクトをコンパイルすると,

atlbase.hがありません。

というエラーが出ます。このエラーが出ると,開発環境にATLが導入されていないと考えられます。

解決方法発見まで

従来はどうだったか?

Wikipediaを見ると,VS2012までは,ATLおよびMFCは有償版のみに付属するライブラリであった。と書かれています。ですので,ATLを利用するためには,StandardまたはProfessionalを購入しなくてはならなかったようです。
しかし,Visual Studio Community 2013以降は無償版でもATL/MFCが利用できるようです。しかし,利用規約は厳しくなっているようです。

Learn Microsoftを見ると,MFCとATLはVS2017以降でサブコンポーネントとしてインストール可能になったようです。

なぜATLはインストールされなかったか?

ではなぜ,私のVisual Studio 2022 Communityには,ATLがインストールされていないのでしょうか?
以下の記事を読んでわかりました。

インストールの時に「個々のコンポーネントを選択する」オプションでATLを選択しなかったからです
では,既にインストールされたVisual Studio 2022 CommunityにATLをインストールするにはどうしたらよいのでしょうか?

救世主現る

そうこうしていると,以下のツイートを見つけました。

解決方法

以下の動画から手順を起こしました。

  1. Visual Studioを起動し,Platform Toolsetのバージョンを確認する。
    Visual Studio 2022(vXXX) などと書かれているはずです。確認ができたらVisual Studioを終了します。
  2. Visual Studio Installer を起動する。
    Visual Studioをインストールした時に一緒にインストールされています。スタートメニューから探せば見つかるはずです。
  3. 最初のダイアログのInstalledタブにある,先ほど控えたVisual Studioのバージョンのカードの右上にある Modfyボタンをクリックします。
  4. Modfyingダイアログが表示されますので,Indivisual Componentsタブを選択します。
  5. Sarch Componentsテキストボックスに,atlと入力します。
  6. ARM,ARM64,x86,x64を対象としたものが表示されますので,ATLx86またはx64と書かれているものだけを選択します。(チェックボックスをチェックします。)
    なお,vXXXが書かれたものでは,1.で調べたものと同じものは必ず選びます。
    余裕があればMFCも該当するものをインストールしておいたほうが良いかもしれません。
  7. ダイアログの右下にある Modify ボタンをクリックします。
  8. 元のダイアログに戻ります。インストールが終了したら,Visual Studioを起動し,atlbase.hのエラーが出なくなったことを確認してください。

動画では,MFCのライブラリが一つだけ選ばれていますが,その意味が私にはよくわかりませんでした。理由が分かる方いらっしゃいましたら教えていただけるとありがたいです。

謝辞

神村慧様のTweetにより問題が解決しました。

神村慧@ANFWorks

貴重な情報を提供してくださり,ありがとうございます。感謝します。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1