原文鏈接:https://blog.csdn.net/m_LeonWANG/article/details/37598807
這是一個鏈接時候檢查到的錯誤,大概有下面兩種情況會引起這個錯誤。
第一種:
1.變量定義:
A.h中聲明瞭變量a(非類成員變量),A.cpp是A.h中所聲明的類的實現源代碼,B.cpp是主程序文件,包含頭文件 A.h。編譯能夠通過,但鏈接時出了”error LNK1169: 找到一個或多個多重定義的符號“的錯誤。這是因爲B.cpp包含頭文件 A.h後,相當於又定義了變量a。
解決辦法是在A.h中的變量聲明前加上extern 關鍵字,表示這裏只是聲明不定義,然後在A.cpp中不加extern關鍵字定義這個變量,編譯鏈接順利通過。
第二種:
2.函數定義:
在A.h中定義函數func:
void func()
{
...
}
B.cpp中包含頭文件 A.h,鏈接時也會出現相同的錯誤。
解決辦法有兩個,一種是添加inline關鍵字,這樣實際上是在調用處展開函數體代碼,代替函數調用;另一種辦法是將函數實現放在A.cpp中,這樣就不會出現重定義問題。
我出現的問題通過第一種方法解決:
鏈接順利通過。。。哈哈