读书人

编译的时候总是出这种异常如何解决啊

发布时间: 2012-02-24 16:30:39 作者: rapoo

编译的时候总是出这种错误,怎么解决啊?急死了!!!!
Linking...
RevereCardHJDlg.obj : error LNK2005: "class _com_ptr_t <class _com_IIID <struct _Connection,&struct __s_GUID _GUID_00000550_0000_0010_8000_00aa006d2ea4> > m_pConnection " (?m_pConnection@@3V?$_com_ptr_t@V?$_com_IIID@U_Connection@@$1?_GUID_00000550_0000
_0010_8000_00aa006d2ea4@@3U__s_GUID@@A@@@@A) already defined in RevereCardHJ.obj
Debug/RevereCardHJ.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

RevereCardHJ.exe - 2 error(s), 0 warning(s)


[解决办法]
有一个变量声明在头文件里了,在CPP或C文件里INCLUDE 进来后就会这样,
应该在头文件里加上extern 在CPP 里在定义
[解决办法]
m_pConnection重定义.
RevereCardHJDlg与RevereCardHJ都定义了
[解决办法]
变量的声明和定义是两个概念。
你定义的是全局变量,链接时要给各全局变量分配空间,而各个cpp文件都包含了头文件中对这个变量的定义,因此出现了重名的全局变量。
如果头文件是全局变量的声明,编译链接时就不会再分配空间,也就没那个重名的错误了

呵呵,大概就是这个意思,表述的不太严格:)

读书人网 >VC/MFC

热点推荐