Błąd kompilatora C2813

#import nie jest obsługiwana z /MP

C2813 jest emitowany, jeśli w poleceniu kompilatora określisz opcję kompilatora /MP i co najmniej dwa pliki do skompilowania, a co najmniej jeden z plików zawiera dyrektywę#import preprocesora. Dyrektywa #import generuje klasy języka C++ z typów w określonej bibliotece typów, a następnie zapisuje te klasy w dwóch plikach nagłówkowych. Dyrektywa #import nie jest obsługiwana, ponieważ jeśli wiele jednostek kompilacji importuje bibliotekę tego samego typu, te jednostki powodują konflikt podczas próby zapisania tych samych plików nagłówkowych w tym samym czasie.

Ten błąd kompilatora i /MP opcja kompilatora są nowe w programie Visual Studio 2008.

Przykład

Poniższy przykład generuje kod C2813. Wiersz polecenia w komentarzu "compile with:" wskazuje kompilatorowi użycie opcji kompilatora /MP i /c do skompilowania kilku plików. Co najmniej jeden z plików zawiera dyrektywę #import . Używamy tego samego pliku dwa razy w celu przetestowania tego przykładu.

// C2813.cpp
// compile with: /MP /c C2813.cpp C2813.cpp
#import "C:\windows\system32\stdole2.tlb"   // C2813
int main()
{
}