コンパイラ エラー C2813
#import は /MP でサポートされていません
C2813 は、コンパイラのコマンドで /MP コンパイラ オプションとコンパイルする 2 つ以上のファイルを指定し、1 つ以上のファイルに#import プリプロセッサ ディレクティブが含まれている場合に生成されます。 #Import ディレクティブによって、指定したタイプ ライブラリ内の型から C++ クラスが生成され、これらのクラスが 2 つのヘッダー ファイルに書き込まれます。 複数のコンパイル単位で同じタイプ ライブラリがインポートされる場合、それらの単位は同時に同じヘッダー ファイルに書き込もうとすると競合するため、 #Import ディレクティブはサポートされていません。
このコンパイラ エラーと /MP コンパイラ オプションは、Visual Studio 2008 の新機能です。
例
次の例では C2813 が生成されます。 "compile with:" コメントのコマンド ラインは、 /MP および /c コンパイラ オプションを使用して複数のファイルをコンパイルすることをコンパイラに示します。 少なくとも 1 つのファイルに #import ディレクティブが含まれています。 この例のテストのために、同じファイルを 2 回使用します。
// C2813.cpp
// compile with: /MP /c C2813.cpp C2813.cpp
#import "C:\windows\system32\stdole2.tlb" // C2813
int main()
{
}