CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VC.NET

请大家帮我看一下,谢谢了!

楼主yaoqingyu()2004-04-02 21:44:15 在 .NET技术 / VC.NET 提问

BinTreeNode   error   LNK2019:   无法解析的外部符号   "class   std::basic_ostream<char,s  
  truct   std::char_traits<char>   >   &   __cdecl   operator<<(class   std::basic_ostream<c  
  har,struct   std::char_traits<char>   >   &,class   BinTree<int>   &)"   (??6@YAAAV?$basic  
  _ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$BinTree@H@@@Z)   ,该符号在函数  
    _main   中被引用  
   
  该错误是什么意思呀?  
  我是在一个模板类中重载输入和输出操作符时,出现的错误!  
  谢谢了~  
  问题点数:0、回复次数:3Top

1 楼mywand(简单生活)回复于 2004-04-02 21:52:22 得分 0

不懂。。。。  
  最好把代码贴出来Top

2 楼yaoqingyu()回复于 2004-04-02 22:07:46 得分 0

/*BinTree.h*/  
  #include<iostream>  
  using   namespace   std;  
   
  template<class   T>  
  class   BinTreeNode  
  {  
  template<class   T> friend   class   BinTree;  
  private:  
  BinTreeNode<T>*   left;  
  BinTreeNode<T>*   right;  
  public:  
  T   data;  
  BinTreeNode(const   T   &   item,BinTreeNode<T>*   lptr=NULL,  
  BinTreeNode<T>*   rptr=NULL):data(item),left(lptr),right(rptr)  
  {};  
  BinTreeNode<T>*   GetLeft(void)const{return   left;};  
  BinTreeNode<T>*   GetRight(void)const{return   right;};  
  void   SetLeft(BinTreeNode<T>*   L)  
  {left=L;};  
  void   SetRight(BinTreeNode<T>*   R)  
  {right=R;};  
  };  
  template<class   T>  
  class   BinTree  
  {  
  private:  
  BinTreeNode<T>*   root;  
  T   stop;  
                    public:  
  BinTree():root(NULL)  
  {}  
  BinTree(T   mark):root(NULL),stop(mark)  
  {}  
                                      friend   istream   &   operator>>(istream   &   in,BinTree<T>   &   Tree);  
  friend   ostream   &   operator<<(ostream   &   out,BinTree<T>   &   Tree);  
  };  
  template<class   T>  
  istream   &   operator>>(istream   &   is,BinTree<T>   &   Tree)  
  {  
  T   item;  
  cout<<"Begin   to   build   binary   tree!"<<endl;  
  cout<<"Now   begin   to   input   data   ,if   "<<Tree.stop<<  
  "   is   input,   then   stop   the   data   inputing!"<<endl;  
  is>>item;  
  while(item!=Tree.stop)  
  {  
  Tree.Insert(item);  
  cout<<"Input   data,and   if   "<<Tree.stop<<"   is   input   ,stop   the   data   inputing!";  
  is>>item;  
  }  
  cout<<"Now   stop   the   inputing!";  
  return   in;  
  }  
  template<class   T>  
  ostream   &   operator<<(ostream   &   os,const   BinTree<T>   &   Tree)  
  {  
  os<<"   Output   the   binary   tree   in   the   preorder!"<<endl;  
  Tree.PreOrder(Tree.root,os);  
  os<<endl;  
  return   os;  
  }  
  /*main.cpp*/  
  #include"BinTreeNode.h"  
  #include<iostream>  
  using   namespace   std;  
   
  void   main()  
  {  
  BinTree<int>   tree(-1);  
  cout<<tree;  
  }  
  可以上机了,方便的话请帮我调试一下,  
  非常感谢!!Top

3 楼mywand(简单生活)回复于 2004-04-02 22:23:57 得分 0

Visual   C++   概念:生成   C/C++   程序        
   
  链接器工具错误   LNK2019无法解析的外部符号“symbol”,该符号在函数“function”中被引用  
   
  在   function   中找到了未定义的外部符号   (symbol)。若要解决此错误,请提供符号定义或移除引用它的代码。  
   
  在   Visual   C++   .NET   2003   中,如果使用了   /clr   而未将   CRT   链接到可执行文件,将生成此错误。任何由编译器在未使用   /clr:initialAppDomain   时生成的对象代码都包含对   _check_commonlanguageruntime_version   函数的引用,该函数在   C   运行时库   (CRT)   中定义。如果应用程序在运行库的版本   1   上运行,该函数将会生成一个错误信息。当前编译器生成的代码与运行库的版本   1   不兼容。因此,如果在   Visual   C++   .NET   2003   中编译时不使用   CRT,则应在代码中包含   _check_commonlanguageruntime_version   函数的定义。作为使用   _check_commonlanguageruntime_version   函数的替代方法,您可以与   nochkclr.obj   链接。nochkclr.obj   包含该函数的一个空版本,当您在运行库的版本   1   上运行应用程序时,nochkclr.obj   不生成错误信息。若要使用当前编译器版本生成应用程序以在运行库的以前版本上运行,应使用   /clr:InitialAppDomain。  
   
  若要生成一个纯   MSIL   可执行文件(不与   CRT   链接),则必须在项目中定义该函数,而不能使用   nochkclr.obj(.obj   是本机代码)。有关可验证代码的更多信息,请参见产生可验证的   C++   托管扩展组件。有关从托管   C++   项目创建纯   MSIL   输出文件的更多信息,请参见将   C++   托管扩展项目从混合模式转换成纯   IL。  
   
  本主题的其余部分讨论   LNK2019   的其他原因。  
   
  请看下面的示例:  
   
  extern   int   i;  
  extern   void   g();  
  void   f()  
  {  
        i++;  
        g();  
  }  
  int   main()  
  {  
  }  
  如果在生成中包含的某个文件中没有定义   i   和   g,链接器将生成   LNK2019。可以添加这些定义,方法是将包含这些定义的源代码文件包括为编译的一部分。或者可以将包含这些定义的   .obj   或   .lib   文件传递给链接器。  
   
  对于从早期版本升级到当前版本的   C++   项目,如果定义了   __UNICODE   并且入口点为   WinMain,需要将入口点函数的名称更改为   _tWinMain   或   _tmain。  
   
  导致   LNK2019   的常见问题有:    
   
  符号声明包含拼写错误,以致于符号声明与符号定义不同。    
  使用了一个函数,但其参数的类型或数量与函数定义不匹配。    
  函数声明使用和函数定义使用中的调用约定(__cdecl、__stdcall   或   __fastcall)不同。    
  符号定义在编译为   C   程序的文件中,而符号是在   C++   文件中不带   extern   "C"   修饰符声明的。在此情况下,请修改声明,例如不是使用:    
  extern   int   i;  
  extern   void   g();  
  而使用:    
   
  extern   "C"   int   i;  
  extern   "C"   void   g();  
  同样,如果在将由   C   程序使用的   C++   文件中定义符号,请在定义中使用   extern   "C"。    
   
  符号定义为静态,但稍后在文件外部被引用。    
  没有定义静态类成员。例如,应单独定义下面类声明中的成员变量   si:    
  #include   <stdio.h>  
  struct   X   {  
        static   int   si;  
  };  
   
  //   int   X::si   =   0;       //   uncomment   this   line   to   resolve  
   
  void   main()  
  {  
        X   *px   =   new   X[2];  
        printf("\n%d",px[0].si);       //   LNK2019  
  }  
  也可能由于为   Visual   Studio   .NET   2003   进行的一致性工作生成此错误:模板友元和专用化。在   Visual   Studio   .NET   2003   中,必须定义声明新的非模板函数的友元声明。  
   
  要使代码在   Visual   C++   的   Visual   Studio   .NET   2003   和   Visual   Studio   .NET   版本中均有效,请显式指定友元函数的模板参数列表。  
   
  //   LNK2019.cpp  
  //   LNK2019   expected  
  template<class   T>  
  void   f(T)  
  {  
  }  
   
  template<class   T>  
  struct   S  
  {  
        friend   void   f(T);  
        //   Try   the   folowing   line   instead:  
        //   friend   void   f<T>(T);  
  };  
   
  int   main()  
  {  
        S<int>   s;  
        f(1);       //   unresolved   external  
  }  
  /VERBOSE   链接器选项帮助您查看链接器引用的文件。DUMPBIN   实用工具的   /EXPORT   和   /SYMBOLS   选项还可以帮助您查看   dll   和对象/库文件中定义的符号。  
   
  --------------------------------------------------------------------------------  
   
  不就是二叉树操作吗,何必搞的这么复杂!  
  Top

相关问题

  • 请帮我看一下
  • 请帮我看一下。
  • 帮我看一下...
  • 帮我看一下?
  • 帮我看一下
  • 帮我看一下
  • 请帮我看一下这些代码。
  • 请帮我看一下联接代码
  • Kingron大侠,请帮我看一下
  • 请帮我看一下个错误

关键词

  • .net
  • 模板
  • template
  • visual
  • root
  • null
  • bintreenode
  • bintree
  • lnk2019
  • istream

得分解答快速导航

  • 帖主:yaoqingyu

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

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