最近、VisualStudio2010からVisualStudio2012に切り替えました。作業中のプロジェクトでは、MiLiの BitwiseEnumsライブラリを使用しています。ここでの手順に従って、BitwiseEnumsライブラリのみを含めているので、プロジェクトに追加されるファイルはbitwise_enums.hのみです。
VS2010では問題はありませんでした。VS2012では、#include bitwise_enums.hを実行してコンパイルしようとすると、次のエラーメッセージが表示されます。
1>c:\program files (x86)\windows kits\8.0\include\um\oaidl.h(319):
error C2057: expected constant expression
プロジェクトの外部依存関係を確認すると、ファイルoaidl.hが一覧表示されます。このファイルの中を見ると、319行目で終わる次のステートメントが見つかります。
typedef /* [v1_enum] */
enum tagSF_TYPE
{
SF_ERROR = VT_ERROR,
SF_I1 = VT_I1,
SF_I2 = VT_I2,
SF_I4 = VT_I4,
SF_I8 = VT_I8,
SF_BSTR = VT_BSTR,
SF_UNKNOWN = VT_UNKNOWN,
SF_DISPATCH = VT_DISPATCH,
SF_VARIANT = VT_VARIANT,
SF_RECORD = VT_RECORD,
SF_HAVEIID = ( VT_UNKNOWN | VT_RESERVED )
} SF_TYPE; // Line 319
私の質問は次のとおりです。
- oaidl.hとは何ですか?また、それが私のプロジェクトに含まれる原因は何ですか?
- エラーメッセージはどういう意味ですか、どうすれば修正できますか?
- このエラーがVS2012でのみ発生する理由は何でしょうか。