遺漏函式主體或變數
只要使用函式原型,編譯器就可以繼續而不會發生錯誤,但連結器無法解析對位址的呼叫,因為沒有保留函式程式碼或變數空間。 在建立連結器必須解析的函式呼叫之前,您不會看到此錯誤。
範例:呼叫未定義的函式
main 中的函式呼叫會導致LNK2019,因為原型可讓編譯器認為函式存在。 連結器發現它沒有。
// LNK2019_MFBV.cpp
// LNK2019 expected
void DoSomething(void);
int main() {
DoSomething();
}
範例:呼叫實作的函式
在 C++ 中,請確定您包含類別特定函式的實作,而不只是類別定義中的原型。 如果您要在標頭檔外部定義 類別,請務必在函式之前包含類別名稱 ( Classname::memberfunction
)。
// LNK2019_MFBV_2.cpp
// LNK2019 expected
struct A {
static void Test();
};
// Should be void A::Test() {}
void Test() {}
int main() {
A AObject;
AObject.Test();
}
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應