出现这样的错误怎么解决?error LNK2001: unresolved external symbol "class CArchive & __stdcall operator>>
class CObArrayM : public CObArray
{
public:
CObArrayM()
{
CObArray::CObArray();
};
virtual ~CObArrayM()
{
CObject* pOb = NULL;
for (int i = 0; i < GetSize(); i++)
{
pOb = GetAt(i);
if (pOb)
delete pOb;
}
}
protected:
_DECLARE_DYNCREATE(CObArrayM) \
__declspec(dllexport) friend CArchive& AFXAPI operator>>(CArchive& ar, CObArrayM* &pOb);
};
我的程序在编译时这个类出现如下错误:
LeftView.obj : error LNK2001: unresolved external symbol "class CArchive & __stdcall operator>>(class CArchive &,class CObArrayM * &)" (??5@YGAAVCArchive@@AAV0@AAPAVCObArrayM@@@Z)
大家能不能帮我看看,怎么解决?
问题点数:10、回复次数:7Top
1 楼pomelowu(羽战士)回复于 2006-03-10 10:18:45 得分 8
需要重载operator >>Top
2 楼kelinwang19(kelin)回复于 2006-03-10 10:31:15 得分 2
一般出现2001的错误都是没找到定义引起的,看一下你的程序是否没有包含某个头文件,或者某个库。记得以前碰到过这种错误是没安装sdkTop
3 楼nodefault(永不言败)回复于 2006-03-10 10:38:26 得分 0
我认为问题是在class CObArrayM 调用了class CArchive的成员函数
friend CArchive& AFXAPI operator>>(CArchive& ar, CObArrayM* &pOb);
而class CArchive的定义是:
friend CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb);
也就是说const不能转化为CObArrayM。那该怎么办?Top
4 楼nodefault(永不言败)回复于 2006-03-10 10:39:29 得分 0
刚才敲错了!
也就是说CObject不能转化为CObArrayM。那该怎么办?Top
5 楼pomelowu(羽战士)回复于 2006-03-10 11:24:20 得分 0
CArchive和CObject的派生类能很好的使用。
要序列化某一个类好像必须要从CObject派生的。
http://www.qqread.com/vc/i852212200.htmlTop
6 楼nodefault(永不言败)回复于 2006-03-10 11:39:52 得分 0
老外的这个帖子好象和我的问题很像哦!
http://www.kbalertz.com/kb_Q152254.aspxTop
7 楼nodefault(永不言败)回复于 2006-03-10 13:11:14 得分 0
原因查明了。 只有_DECLARE_DYNCREATE(CObArrayM)。忘了IMPLEMENT_SERIAL(CObArrayM, CObArray, 1);Top
相关问题
- 链接错误,LNK:2001 unresolved external symbol ...
- LNK
- 奇怪:dll问题,用implib也无用,[Linker Error] Unresolved external '__stdcall init_com(int)' referenced from..
- (求助)error LNK2001: unresolved external symbol "int __stdcall InitInstance(void *,int)" (?InitInstance@@YAHPAXH@Z)是什么错误
- CFile and CArchive
- CArchive的疑问
- stdcall的用途?
- "unresolved external symbol ....."
- unresolved external symbol _main
- Unresolved external问题




