编译器错误 C2813

更新:2007 年 11 月

错误消息

#import 不支持 /MP

如果在编译器命令中指定 /MP 编译器选项以及两个或更个要编译的文件,且一个或多个文件包含 #import 预处理器指令,则发出 C2813。#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() 
{
}