MSBuild エラー MSB8041

MSB8041: MFC または ATL ライブラリはこのプロジェクトに必須です。

このエラーは、ビルドに MFC または ATL が必須であるが、それが見つからなかったときに発生します。

解説

MFC および ATL ライブラリは、Visual Studio で C++ ワークロードをインストールするときに既定ではインストールされません。 このエラーを解決するには、ビルド ツールセットに対して適切なバージョンの MFC および ATL ライブラリをインストールするようにします。 C++ ビルド ツールのバージョンごと、およびターゲット プラットフォームごとに、MFC の Spectre 軽減策があるバージョンとないバージョンが存在します。 たとえば、最新 v143 ビルド ツール用 C++ MFC (x86 および x64) には、最新バージョンの Visual Studio 2022 (v143) に対する Spectre 軽減策のない x86 および x64 ライブラリがあります。 特定のバージョンの Visual Studio ツールセットに対して単純に最新のライブラリを使いたい場合は、非 Spectre のビルドの場合は最新 [バージョン] ビルド ツール用 C++ MFC ([ターゲット]) が、Spectre 軽減ビルドの場合は最新 [バージョン] ビルド ツール用 C++ MFC と Spectre 軽減策 ([ターゲット]) が必要です。 ターゲット プラットフォーム アーキテクチャに適したオプションを選択します。 その他は、以前のツールセットを特に対象にしている場合のためです。 詳細については、「MFC ライブラリのバージョン」を参照してください。

MFC および ATL ライブラリをインストールするには

  1. Visual Studio インストーラーを開きます。
  2. 使用する Visual Studio のバージョンの横にある [変更] ボタンを選択します。
  3. ダイアログ ボックスの上部にある [個別のコンポーネント] タブを選択します。
  4. [コンポーネントの検索] ボックスに「MFC」と入力します。
  5. プロジェクトのターゲットに一致する MFC コンポーネントを選択します (x86 や ARM64EC など)。 Spectre 軽減策を有効にしてプロジェクトをビルドする場合は、Spectre 軽減策を含むコンポーネントを選択します。
    • ほとんどの場合、最新ビルド ツール用の MFC を選択します。 組織やプロジェクトで、以前の特定のバージョンのツールセットが必要になる場合があります。 インストールする MFC コンポーネントのバージョン、ターゲット、Spectre 軽減策が、ビルドするプロジェクトで必要なツールセットのバージョン、ターゲット、Spectre 軽減策と一致するようにしてください。
  6. [コンポーネントの検索] ボックスに「ATL」と入力します。
  7. プロジェクトのターゲットに一致する ATL コンポーネントを選択します (x86 や ARM64EC など)。 Spectre 軽減策を有効にしてプロジェクトをビルドする場合は、Spectre 軽減策を含むコンポーネントを選択します。
    • ほとんどの場合、最新ビルド ツール用の ATL を選択します。 組織やプロジェクトで、以前の特定のバージョンのツールセットが必要になる場合があります。 インストールする ATL コンポーネントのバージョン、ターゲット、Spectre 軽減策が、ビルドするプロジェクトで必要なツールセットのバージョン、ターゲット、Spectre 軽減策と一致するようにしてください。
  8. [変更] を選択し、選択済みのコンポーネントをインストールします。

必要なライブラリとバイナリをインストールするように Visual Studio を変更する方法の詳細については、Visual Studio の変更に関するページを参照してください。

高度な診断

次のファイルが見つからない場合、ビルドの詳細なトラブルシューティングのために、MSBuild ターゲット Microsoft.CppBuild.targets の C++ ビルド プロセスでこのエラーがトリガーされます: $(VCToolsInstallDir)atlmfc\lib\$(_SpectreLibsDir)$(PlatformShortName)\mfcs140.lib。 プロパティは環境 ($(VCToolsInstallDir)) とプロジェクト構成から取得されます。$(_SpectreLibsDir) は空か spectre\ です。$(PlatformShortName)x86x64armarm64、または arm64EC です。