warning LNK4006 這個爛問題終於搞掉了!

就寫了一個簡單的Timer計時器類,單獨編譯完全沒問題,警告什麼的都沒有,但是一link就出岔子,每次都提示 xxx.obj : warning LNK4006: "private: static class std::vector<class Nomad::Timer *,class std::allocator<class Nomad::Timer *> > Nomad::Timer::mTimers" (?mTimers@Timer@Nomad@@0V?$vector@PAVTimer@Nomad@@V?$allocator@PAVTimer@Nomad@@@std@@@std@@A) 已在 NomadTimer.obj 中定義;已忽略第二個定義。
除了有個警告很礙眼其實暫時也沒發現什麼很嚴重的問題,但是每次都警告我很不爽。。。
google了好久都沒找到解決辦法,其他人發出的帖子一般都是說設置問題之類,但是我也按照他們說的改過設置了,就是不對頭,後來自己琢磨琢磨,警告中說重複定義,msdn上面也說去除多餘的定義就ok了,回頭看看自己的代碼,是不是因爲static std::vector<Timer*> mTimers的定義也放在頭文件的緣故?這樣其他文件包含這個頭文件的時候就會找到這個定義了,多個文件包含當然會發現多個定義了,於是將這個 static成員放cpp中定義,譁~~整個世界清靜了。。。

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