C++ “error LNK1169: 找到一個或多個多重定義的符號”的解決方法

原文鏈接: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中,這樣就不會出現重定義問題。
我出現的問題通過第一種方法解決:

 

 鏈接順利通過。。。哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章