C++Builder XE以降でatlbase.hをインクルードするとコンパイルエラーが発生する
概要
C++Builder XE以降のバージョンで、 ActiveX フレームワークは、従来のバージョンで利用していたアクティブ テンプレート ライブラリ(ATL)ではなく Delphi ActiveX ライブラリ(DAX)へ依存するように変更されました。 そのためXE以降では、atlbase.hをインクルードしているソースをコンパイルすると、以下のようなエラーメッセージが表示されます。
atlbase.h(5): You must copy ATL files from an earlier version of BDS [$(BDS)\include\atl\*.*] to use ATL
なお、XEの時は、以下の方法で対処できました。
- C++Builderの旧バージョンからATL関連のファイルをコピーする
- ($BCB_Home)\include\windows\vcl\vclhew.hpp
- ($BCB_Home)\include\windows\sdk\atlディレクトリごと、旧バージョンから上記に該当するファイルを見つけて、C++Builder XEの同じディレクトリへコピーし、プロジェクトをビルドし直す
しかしながら、上記は継続的なサポートが保証されない方法でした。そのためC++Builderの旧バージョンから移行される場合、従来のコンパイラ(bcc32)はもとより、bcc64やbcc32cといったClangコンパイラも新たに利用可能となりますが、今後も同じ方法で対処できる保証が無いため、前述したDAXへ移行することを推奨いたします。