Visual Studio ExpressでC++プログラムをコンパイルすると、atlbase.h
。 SDKまたは何かが不足していますか?
ヘッダーatlbase.h
を含むMicrosoft ATL(Active Template Library)は Windows 2003 SDK に含まれていますが、新しいWindows SDKリリースには含まれていません。 Visual StudioのProfessionalエディションにも含まれています。
Windows Driver Kit Version 7.1. に含まれています。
Visual Studio 2015のユーザーの場合、Common Tools for C++がインストールされていることを確認してください(VSインストーラーの一部)。
Visual Studio 2017 Expressエディションのソリューション
Visual Studio 2017 ExpressエディションでCOM C++プロジェクトをビルドすると、同じエラーが発生しました。ここで複数のユーザーが述べたように、Visual StudioのExpressエディションにはATLサポートが含まれていません。したがって、C++ COM/ATLプロジェクトをビルドするには、少なくともCommunityエディションが必要です。
Expressエディションを本当に使用する必要がある場合は、 Build Tools for Visual Studio 2017 をダウンロードしてインストールできます。セットアップ中に、 'Visual C++ ATL for x86およびx64'コンポーネントを必ず有効にしてください。
その後、プロジェクトプロパティにVC++ディレクトリを追加します。
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\atlmfc\lib\x86
これで、VC++コンパイラはATLソースおよびライブラリファイルを見つけることができます。
これは Windows Platform SDK の一部のようです。
コンピュータでファイルを検索する必要があります。不足している場合は、それがわかります。
Visual Studio 2017 Community Editionでは、「Visual C++ ATLサポート」とMFCおよびATLサポートをインストールしました。エラーはまだx64プロジェクトで発生しました。
次の2つのコマンドでいくつかのパスを修正しました。
_C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>mklink /d atlmfc "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc"
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib>mklink /d AMD64 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib\x64
_
最終的に、C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\include
でヘッダー_atlbase.h
_が見つかりました。このパスは、単に_vsvars32.bat
_によってVC Includeディレクトリに追加されなかったため、ビルド中にヘッダーが見つかりませんでした。
vsvars32.batには次の行が含まれます。
_@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%`.
_
これは、マシンのC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
に解決されました。
ディレクトリジャンクションを作成したので、ビルドツールは予想されるディレクトリで_atlbase.h
_を見つけます(これは上記のソリューションセクションの最初のコマンドです)。
_C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>mklink /d atlmfc "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc"
_
その後、リンカは_atls.lib
_を見つけられませんでした( ファイルatls.libを開けない を参照)。これは、ファイル構造がlib
にx86バージョンのlibsが直接含まれ、_lib\AMD64
_にx64バリアントが含まれる必要があるためです。代わりに、_lib\x86
_にはx86バージョンが含まれ、_lib\x64
_には64ビットバージョンが含まれていました。 64ビットプロジェクトをビルドしたため、AMD64からx64に別のディレクトリジャンクを作成すると、問題が解決しました。
_C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib>mklink /d AMD64 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib\x64
_
サンプルプロジェクトでも同じ問題が発生しました。サンプルプロジェクトのプロパティを指定し、サンプルプロジェクトを正常にコンパイルしました。
Visual Studio 8
ヘッダー用C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include
にとって .lib
ファイルC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib