Error del compilador C2813

Actualización: noviembre 2007

Mensaje de error

No se admite #import con /MP
#import is not supported with /MP

El error C2813 se emite cuando en un comando del compilador se especifica la opción /MP del compilador con dos o más archivos para compilar, y al menos uno de los archivos contiene la directiva #import del preprocesador. La directiva #import genera clases de C++ a partir de los tipos de la biblioteca de tipos especificada y, a continuación, escribe esas clases en dos archivos de encabezado. La directiva #import no se admite debido a que, si varias unidades de compilación importan la misma biblioteca de tipos, esas unidades entran en conflicto cuando intentan escribir los mismos archivos de encabezado al mismo tiempo.

Este error del compilador, así como la opción /MP del compilador, son características nuevas en Visual Studio 2008.

Ejemplo

El ejemplo siguiente genera el error C2813. La línea de comandos en el comentario "compile with:" (compilar con) indica al compilador que utilice las opciones /MP y /c del compilador para compilar varios archivos. Al menos uno de los archivos contiene la directiva #import. Utilizamos el mismo archivo dos veces para probar este ejemplo.

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