添加了CSpreadSheet.h后出现LNK2005错误
一个朋友来信说,他在工程中添加了一个数据导出到Excel表的类CSpreadSheet,结果出现了LNK2005的错误。在网上查了一下,发现还不只我这个朋友遇到这个问题这个CSpreadSheet.h文件在CodeProject和CodeGuru上都有,其实是这个文件有问题。这个头文件既包括了CSpreadSheet类的定义,还包括这个类的实现,这样所有包含这个头文件的类都有一份这个类的实现,链接的时候自然就出错了。只要工程中有两个以上的地方包含这个头文件就会出现这个错误。解决的办法很简单,建立一个CSpreadSheet.cpp文件,然后在这个文件的开头加上:
https://blog.51cto.com/Images/OutliningIndicators/None.gif#include “stdafx.h”
https://blog.51cto.com/Images/OutliningIndicators/None.gif#include “CSpreadSheet.h”
然后把CSpreadSheet.h中的从”// Open spreadsheet for reading and writing”(含)到”#endif”(不含)之前的语句都剪切到CSpreadSheet.cpp中,也就是将类的声明和实现分离,再将CSpreadSheet.cpp文件加到工程中,这样就可以了。
文档来源:51CTO技术博客https://blog.51cto.com/u_9542848/3236539
页:
[1]