Partager via


Erreur du compilateur C2813

#import n'est pas pris en charge avec /MP

L’erreur C2813 est émise si, dans une commande du compilateur, vous spécifiez l’option du compilateur /MP , deux fichiers ou plus à compiler et qu’un ou plusieurs des fichiers contiennent la directive de préprocesseur#import . La directive #import génère des classes C++ à partir des types dans la bibliothèque de types spécifiée, puis écrit ces classes dans deux fichiers d’en-tête. La directive #import n’est pas prise en charge, car si plusieurs unités de compilation importent la même bibliothèque de types, ces unités sont en conflit quand elles essaient d’écrire les mêmes fichiers d’en-tête en même temps.

Cette erreur du compilateur et l’option du compilateur /MP sont nouvelles dans Visual Studio 2008.

Exemple

L’exemple suivant génère l’erreur C2813. La ligne de commande située dans le commentaire « compiler avec : » indique au compilateur d’utiliser les options /MP et /c pour compiler plusieurs fichiers. Au moins un des fichiers contient la directive #import . Nous utilisons le même fichier à deux reprises pour tester cet exemple.

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