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


Ошибка компилятора 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()
{
}