Поделиться через


Ошибка компилятора C2813

директива #import не поддерживается с параметром /MP

Замечания

C2813 выводится, если в команде компилятора указана опция /MP и для компиляции выбрано два или более файлов, причем один или несколько из этих файлов содержат директиву препроцессора #import. Директива #import создает классы C++ на основе типов в указанной библиотеке типов, а затем записывает эти классы в два файла заголовков. Директива #import не поддерживается, так как в случае, если несколько блоков компиляции импортируют одну и ту же библиотеку типов, между блоками возникает конфликт при попытке одновременной записи одних и тех же файлов заголовков.

Эта ошибка компилятора и параметр компилятора /MP новые в Visual Studio 2008.

Пример

В следующем примере возникает C2813. Командная строка в комментарии "compile with:" предписывает компилятору использовать параметры компилятора /MP и /c для компиляции нескольких файлов. По крайней мере один из файлов содержит директиву #import . Один и тот же файл используется дважды для проверки данного примера.

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