在寫數學庫時,很無奈的遇到莫名其妙的lnk2005錯誤——類似:
aaa.obj error lnk2005 int book c
?book@@3ha already defined in bbb.obj的一堆東西。。。說這些函式在另乙個只呼叫該函式的而壓根兒沒有定義的檔案裡已有定義,汗。。。
看msdn只覺得一頭霧水,全域性變數、第三方庫檔案我都沒有用到啊。到網上搜尋,竟然能搜出一大堆,但文章的內容都是相似的。搜來搜去都是因為全域性變數的問題,真的鬱悶。但忽然看到有一篇文章的結尾說:
"這就是我所遇到過的
lnk2005
錯誤的幾種情況,肯定還有其他的情況也可能造成這種錯誤,所以我不希望你在看完這篇文章以後,再遇到
lnk2005
錯誤時候,不動腦筋的想對號入座的排除錯誤。程式設計的過程就是乙個思考的過程,所以還是多多開動你的頭腦,那樣收穫會更多!"
說得很對啊。於是想了想——全域性變數的問題是因為在宣告時賦了初值,讓變數得到實體,如果這個操作重複了,就會產生lnk2005。那麼對於函式來說,難道……難道是因為我在.h檔案裡把函式體也寫上去而導致的?
於是立刻到.h檔案裡把所有的實現都刪掉,只留函式宣告,然後在相應的.cpp檔案裡寫好函式體(因為有些函式的內容只有
一、兩行,懶得去拆。。。)。果然,成功執行了。
由這次可見,程式設計時真的要多動腦筋;還有,別隨便偷懶!
我所遇到的LNK2005問題。
在寫數學庫時,很無奈的遇到莫名其妙的lnk2005錯誤 類似 aaa.obj error lnk2005 int book c book 3ha already defined in bbb.obj的一堆東西。說這些函式在另乙個只呼叫該函式的而壓根兒沒有定義的檔案裡已有定義,汗。看msdn只覺得一頭...
LNK2005符號重定義問題
最近修改乙個服務模組的時候,發現編譯的時候竟然出現lnk2005錯誤 1 libcmt.lib invarg.obj error lnk2005 void cdecl invalid parameter unsigned short const unsigned short const unsign...
VC 的鏈結錯誤LNK2005
vc 的鏈結錯誤lnk2005 程式設計中經常能遇到lnk2005錯誤 重複定義錯誤,其實lnk2005錯誤並不是乙個很難解決的錯誤。弄清楚它形成的原因,就可以輕鬆解決它了。造成lnk2005錯誤主要有以下幾種情況 1 重複定義全域性變數。可能存在兩種情況 a 對於一些初學程式設計的程式設計師,有時...