一個(gè)朋友來信說,他在工程中添加了一個(gè)數(shù)據(jù)導(dǎo)出到Excel表的類CSpreadSheet,結(jié)果出現(xiàn)了LNK2005的錯(cuò)誤。在網(wǎng)上查了一下,發(fā)現(xiàn)還不只我這個(gè)朋友遇到這個(gè)問題,CSDN上也有類似問題:http://topic.csdn.net/t/20050311/09/3842070.html
這個(gè)CSpreadSheet.h文件在CodeProject和CodeGuru上都有,其實(shí)是這個(gè)文件有問題。這個(gè)頭文件既包括了CSpreadSheet類的定義,還包括這個(gè)類的實(shí)現(xiàn),這樣所有包含這個(gè)頭文件的類都有一份這個(gè)類的實(shí)現(xiàn),鏈接的時(shí)候自然就出錯(cuò)了。只要工程中有兩個(gè)以上的地方包含這個(gè)頭文件就會出現(xiàn)這個(gè)錯(cuò)誤。解決的辦法很簡單,建立一個(gè)CSpreadSheet.cpp文件,然后在這個(gè)文件的開頭加上:
#include?“stdafx.h”
#include?“CSpreadSheet.h”
然后把CSpreadSheet.h中的從“// Open spreadsheet for reading and writing”(含)到“#endif”(不含)之前的語句都剪切到CSpreadSheet.cpp中,也就是將類的聲明和實(shí)現(xiàn)分離,再將CSpreadSheet.cpp文件加到工程中,這樣就可以了。
posted on 2006-04-24 15:24
zealsoft 閱讀(1518)
評論(0) 編輯 收藏 引用 所屬分類:
錯(cuò)誤處理