Sdílet prostřednictvím


Chyba kompilátoru C2813

#import se v /MP nepodporuje

C2813 se vygeneruje, pokud v příkazu kompilátoru zadáte možnost kompilátoru /MP a dva nebo více souborů ke kompilaci a jeden nebo více souborů obsahuje direktivu preprocesoru#import . Direktiva #import generuje třídy jazyka C++ z typů v zadané knihovně typů a potom tyto třídy zapisuje do dvou hlaviček souborů. Direktiva #import není podporována, protože pokud více jednotek kompilace importuje stejnou knihovnu typů, dojde ke konfliktu těchto jednotek při pokusu o zápis stejných souborů hlaviček ve stejnou dobu.

Tato chyba kompilátoru a možnost kompilátoru /MP jsou v sadě Visual Studio 2008 novinkou.

Příklad

Následující ukázka vygeneruje C2813. Příkazový řádek v komentáři "compile with:" označuje kompilátoru, aby pomocí možností kompilátoru /MP a /c kompiloval několik souborů. Alespoň jeden ze souborů obsahuje direktivu #import . Pro účely testování tohoto příkladu použijeme stejný soubor dvakrát.

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