共用方式為


編譯器錯誤 C2813

更新:2007 年 11 月

錯誤訊息

使用 /MP 時不支援 #import

如果您在編譯器 (Compiler) 命令中指定 /MP 編譯器選項以及要編譯的兩個或更多個檔案,而且其中一個或多個檔案包含 #import 前置處理器指示詞 (Preprocessor Directive),就會發出 C2813。#import 指示詞會從指定型別程式庫中的型別產生 C++ 類別 (Class),接著將這些類別寫入到兩個標頭檔中。因為如果多個編譯單位 (Compilation Unit) 匯入相同的型別程式庫,當這些單位同時嘗試寫入至相同標頭檔時就會發生衝突,所以不支援 #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() 
{
}