编译器错误 C2813

#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()
{
}