一個朋友來信說,他在工程中添加了一個數(shù)據(jù)導(dǎo)出到Excel表的類CSpreadSheet,結(jié)果出現(xiàn)了LNK2005的錯誤。在網(wǎng)上查了一下,發(fā)現(xiàn)還不只我這個朋友遇到這個問題,CSDN上也有類似問題:http://topic.csdn.net/t/20050311/09/3842070.html
這個CSpreadSheet.h文件在CodeProject和CodeGuru上都有,其實是這個文件有問題。這個頭文件既包括了CSpreadSheet類的定義,還包括這個類的實現(xiàn),這樣所有包含這個頭文件的類都有一份這個類的實現(xiàn),鏈接的時候自然就出錯了。只要工程中有兩個以上的地方包含這個頭文件就會出現(xiàn)這個錯誤。解決的辦法很簡單,建立一個CSpreadSheet.cpp文件,然后在這個文件的開頭加上:


然后把CSpreadSheet.h中的從“// Open spreadsheet for reading and writing”(含)到“#endif”(不含)之前的語句都剪切到CSpreadSheet.cpp中,也就是將類的聲明和實現(xiàn)分離,再將CSpreadSheet.cpp文件加到工程中,這樣就可以了。