CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

出现这样的错误怎么解决?error LNK2001: unresolved external symbol "class CArchive & __stdcall operator>>

楼主nodefault(永不言败)2006-03-10 09:47:47 在 VC/MFC / 进程/线程/DLL 提问

 
  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问题

关键词

  • cobarraym
  • carchive
  • pob
  • cobarray
  • 错误
  • cobject
  • operator
  • 出现
  • 不能

得分解答快速导航

  • 帖主:nodefault
  • pomelowu
  • kelinwang19

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo