當您嘗試將數據成員定義為 dllimport 函式時,編譯程式 C2491 錯誤
本文可協助您解決當您嘗試將數據成員定義為 dllimport
函式時所發生的編譯程式 C2491 錯誤。
原始產品版本: Visual C++
原始 KB 編號: 815647
徵兆
您無法套用 __declspec(dllimport)
關鍵詞來實作函式。 例如,當您嘗試將數據成員定義 (包括靜態數據成員和函式) 為 dllimport
函式時,您會收到下列編譯程式 C2491 錯誤訊息:
'identifier': 不允許定義 dllimport 函式
原因和解決方式
您只能將 關鍵詞套 __declspec(dllimport)
用至宣告。 您無法套用 __declspec(dllimport)
關鍵詞來實作函式。 這個關鍵詞的目的是要透過 DLL 宣告函式的實作。 同樣地,如果您將 關鍵詞套 __declspec(dllimport)
用至數據成員,則會從 DLL 接收初始數據。 因此,您一開始無法在程序代碼中指派值。
當您嘗試編譯下列程式代碼時,會收到編譯程式 C2491 錯誤:
// function definition
void __declspec(dllimport) funcB()
{
// error C2491: 'funcB' : definition of dllimport function not allowed
}
發生此行為的原因是您將函式實作定義為 dllimport
。 若要避免此編譯程序錯誤,請勿定義函式,而是改為宣告函式,如下所示:
// function declaration
void __declspec(dllimport) funcB(); // ok
int main()
{
}
同樣地,當您嘗試編譯下列程式代碼時,會收到編譯程式 C2491 錯誤:
//defining data member
extern __declspec(dllimport) int code = 1;
// error C2491: 'code' : definition of dllimport data not allowed
您會收到此錯誤訊息,因為您已將資料成員定義為 dllimport
。 若要避免此編譯程序錯誤,請勿定義數據成員,而是改為宣告數據成員,如下所示:
// declaring data member
extern __declspec(dllimport) int code; // ok
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: