Erreur du compilateur C2813
Mise à jour : novembre 2007
Message d'erreur
#import n'est pas pris en charge avec /MP
#import is not supported with /MP
L'erreur C2813 est générée si vous spécifiez dans une commande du compilateur l'option /MP du compilateur et deux ou plusieurs fichiers à compiler, et que un ou plusieurs des fichiers contiennent la directive de préprocesseur#import. La directive #import génère des classes C++ à partir des types de 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, cela crée un conflit lorsqu'elles essayent 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 des nouveautés dans Visual Studio 2008.
Exemple
L'exemple suivant génère l'erreur C2813. La ligne de commande dans le commentaire "compiler avec:" indique au compilateur d'utiliser les options /MP et /c du compilateur pour compiler plusieurs fichiers. Un des fichiers au moins contient la directive #import. Nous utilisons le même fichier deux fois pour les besoins de test de cet exemple.
// C2813.cpp
// compile with: /MP /c C2813.cpp C2813.cpp
#import "C:\windows\system32\stdole2.tlb" // C2813
int main()
{
}