编译器错误 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()
{
}