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

很急,帮帮我好吗?为什么我的程序会有如下链接错误呢?

楼主huzht()2003-01-04 16:31:49 在 VC/MFC / 基础类 提问

为什么我的程序会有如下链接错误呢?  
   
  我是个初学者,自己派生了一个类:  
  ····························  
  ·····························  
  ····························  
  typedef   struct   XYZ  
  {    
  double   x,y,z;  
  }XYZ,*PXYZ;  
   
   
   
  typedef   struct   XY  
  {  
  double   x,y;  
  }XY,*PXY;  
   
   
   
   
  class   M  
  {  
  public:  
  M   (PXYZ   pxyz);  
  M   (PXYZ   pxyz,PXY   pxy);  
  ~   M();  
          void   Run1();  
  void   Run_2();  
  void   GetDate(PXYZ   pxyz);  
  private:  
  PXYZ   xyz;  
   
  PXY   xy;  
  };  
   
   
   
  M::M   (PXYZ   pxyz)  
  {  
  xyz=pxyz;  
  }  
   
  void   M::Run1()  
  {  
  xyz->y   =   (xyz->x)*2;  
   
  xyz->z   =   xyz->y*4;  
   
  }  
   
   
  M::M(PXYZ   pxyz,PXY   pxy)  
  {  
  xyz   =   pxyz;  
  xy   =   pxy;  
   
   
  }  
   
  void   M::GetDate(PXYZ   pxyz)  
  {  
  pxyz   =   xyz;  
   
  }  
   
  void   M::Run_2()  
  {  
  xyz->x   =   xy->x;      
   
  xyz->y   =   xy->y;  
  }  
   
  M::~M()  
  {  
  }  
   
   
  ···································  
  ····································  
  ·····································  
   
   
  报错为:  
   
  --------------------Configuration:   exp_2   -   Win32   Debug--------------------  
  Linking...  
  exp_2Dlg.obj   :   error   LNK2005:   "public:   __thiscall   M::M(struct   XYZ   *)"   (??0M@@QAE@PAUXYZ@@@Z)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   void   __thiscall   M::Run1(void)"   (?Run1@M@@QAEXXZ)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   __thiscall   M::M(struct   XYZ   *,struct   XY   *)"   (??0M@@QAE@PAUXYZ@@PAUXY@@@Z)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   void   __thiscall   M::GetDate(struct   XYZ   *)"   (?GetDate@M@@QAEXPAUXYZ@@@Z)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   void   __thiscall   M::Run_2(void)"   (?Run_2@M@@QAEXXZ)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   __thiscall   M::~M(void)"   (??1M@@QAE@XZ)   already   defined   in   exp_2.obj  
   
  Debug/exp_2.exe   :   fatal   error   LNK1169:   one   or   more   multiply   defined   symbols   found  
   
  Error   executing   link.exe.  
   
  exp_2.exe   -   7   error(s),   0   warning(s)  
  问题点数:0、回复次数:18Top

1 楼huzht()回复于 2003-01-04 16:33:15 得分 0

为什么我的程序会有如下链接错误呢?  
   
  我是个初学者,自己派生了一个类,  
    typedef   struct   XYZ  
  {    
  double   x,y,z;  
  }XYZ,*PXYZ;  
   
   
   
    typedef   struct   XY  
  {  
  double   x,y;  
  }XY,*PXY;  
   
   
   
   
  class   M  
  {  
  public:  
  M   (PXYZ   pxyz);  
  M   (PXYZ   pxyz,PXY   pxy);  
  ~   M();  
          void   Run1();  
  void   Run_2();  
  void   GetDate(PXYZ   pxyz);  
  private:  
  PXYZ   xyz;  
   
  PXY   xy;  
  };  
   
   
   
  M::M   (PXYZ   pxyz)  
  {  
  xyz=pxyz;  
  }  
   
  void   M::Run1()  
  {  
  xyz->y   =   (xyz->x)*2;  
   
  xyz->z   =   xyz->y*4;  
   
  }  
   
   
  M::M(PXYZ   pxyz,PXY   pxy)  
  {  
  xyz   =   pxyz;  
  xy   =   pxy;  
   
   
  }  
   
  void   M::GetDate(PXYZ   pxyz)  
  {  
  pxyz   =   xyz;  
   
  }  
   
  void   M::Run_2()  
  {  
  xyz->x   =   xy->x;      
   
  xyz->y   =   xy->y;  
  }  
   
  M::~M()  
  {  
  }Top

2 楼huzht()回复于 2003-01-04 16:34:30 得分 0

 
   
  我是个初学者,自己派生了一个类:  
    typedef   struct   XYZ  
  {    
  double   x,y,z;  
  }XYZ,*PXYZ;  
   
   
   
    typedef   struct   XY  
  {  
  double   x,y;  
  }XY,*PXY;  
   
   
   
   
  class   M  
  {  
  public:  
  M   (PXYZ   pxyz);  
  M   (PXYZ   pxyz,PXY   pxy);  
  ~   M();  
                    void   Run1();  
  void   Run_2();  
  void   GetDate(PXYZ   pxyz);  
  private:  
  PXYZ   xyz;  
                    PXY   xy;  
  };  
  M::M   (PXYZ   pxyz)  
  {  
  xyz=pxyz;  
  }  
   
  void   M::Run1()  
  {  
  xyz->y   =   (xyz->x)*2;  
                    xyz->z   =   xyz->y*4;  
  }  
   
   
  M::M(PXYZ   pxyz,PXY   pxy)  
  {  
  xyz   =   pxyz;  
  xy   =   pxy;  
  }  
   
  void   M::GetDate(PXYZ   pxyz)  
  {  
  pxyz   =   xyz;  
   
  }  
   
  void   M::Run_2()  
  {  
  xyz->x   =   xy->x;      
                    xyz->y   =   xy->y;  
  }  
   
  M::~M()  
  {  
  }Top

3 楼huzht()回复于 2003-01-04 16:37:07 得分 0

--------------------Configuration:   exp_2   -   Win32   Debug--------------------  
  Linking...  
  exp_2Dlg.obj   :   error   LNK2005:   "public:   __thiscall   M::M(struct   XYZ   *)"   (??0M@@QAE@PAUXYZ@@@Z)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   void   __thiscall   M::Run1(void)"   (?Run1@M@@QAEXXZ)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   __thiscall   M::M(struct   XYZ   *,struct   XY   *)"   (??0M@@QAE@PAUXYZ@@PAUXY@@@Z)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   void   __thiscall   M::GetDate(struct   XYZ   *)"   (?GetDate@M@@QAEXPAUXYZ@@@Z)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   void   __thiscall   M::Run_2(void)"   (?Run_2@M@@QAEXXZ)   already   defined   in   exp_2.obj  
   
  exp_2Dlg.obj   :   error   LNK2005:   "public:   __thiscall   M::~M(void)"   (??1M@@QAE@XZ)   already   defined   in   exp_2.obj  
   
  Debug/exp_2.exe   :   fatal   error   LNK1169:   one   or   more   multiply   defined   symbols   found  
  Error   executing   link.exe.  
   
  exp_2.exe   -   7   error(s),   0   warning(s)  
  Top

4 楼ixMind(路在何方)回复于 2003-01-04 16:41:19 得分 0

函数体的重复定义  
  不知道你的文件是如何组织的?Top

5 楼hnyyy(前进)回复于 2003-01-04 16:44:07 得分 0

因为你的这个类被编译了多次。  
   
  如果是MFC程序大致这样就可以了。  
  头文件中只做声明并使用#pragma   once  
   
  #pragma   once  
  class   M  
  {  
  public:  
  M   (PXYZ   pxyz);  
  M   (PXYZ   pxyz,PXY   pxy);  
  ~   M();  
          void   Run1();  
  void   Run_2();  
  void   GetDate(PXYZ   pxyz);  
  private:  
  PXYZ   xyz;  
   
  PXY   xy;  
  };  
   
  在.cpp中  
  #include   "stdafx.h"  
  #include   "xxx.h"//头文件  
   
  M::M   (PXYZ   pxyz)  
  {  
  xyz=pxyz;  
  }  
   
  void   M::Run1()  
  {  
  xyz->y   =   (xyz->x)*2;  
   
  xyz->z   =   xyz->y*4;  
   
  }  
   
   
  M::M(PXYZ   pxyz,PXY   pxy)  
  {  
  xyz   =   pxyz;  
  xy   =   pxy;  
   
   
  }  
   
  void   M::GetDate(PXYZ   pxyz)  
  {  
  pxyz   =   xyz;  
   
  }  
   
  void   M::Run_2()  
  {  
  xyz->x   =   xy->x;      
   
  xyz->y   =   xy->y;  
  }  
   
  M::~M()  
  {  
  }  
   
  Top

6 楼huzht()回复于 2003-01-04 16:44:16 得分 0

给我个邮箱我把工程传给你   好吗?  
  Top

7 楼huzht()回复于 2003-01-04 16:46:39 得分 0

我的结构体和类的定义和说明及实现都在一个头文件内Top

8 楼huzht()回复于 2003-01-04 16:49:16 得分 0

用win32   console   application   正常运行  
   
  可我把它加到一个基于对话框的程序中  
   
  就出现啦   这种错误!  
   
  帮帮我好吗?Top

9 楼jishiping(JSP 季世平)回复于 2003-01-04 16:50:40 得分 0

重复定义啊。将上面的结构定义写在头文件(*.h或者*.hpp)里,而函数的实现部分写在另一个   cpp   文件里。Top

10 楼huzht()回复于 2003-01-04 16:54:33 得分 0

不管用啊  
   
  我还是传给你  
   
  帮帮我好吗?Top

11 楼huzht()回复于 2003-01-04 17:00:41 得分 0

:\保存文件\试验工程\exp_2\exp.cpp(45)   :   fatal   error   C1010:   unexpected   end   of   file   while   looking   for   precompiled   header   directive  
   
  出这个错   我该怎么办?  
  Top

12 楼wangweicai(关外才子)回复于 2003-01-04 17:10:29 得分 0

1,你同样的内容贴了好几遍,有病!  
  2,同样的问题出在程序上,更说明你有病!  
  3,你最好把整个程序推翻,重做!  
  4,还有构造函数最好有且只有两个:  
        缺省构造函数和拷贝构造函数,并且两个函数都要重写;  
        析构函数最好也重写。Top

13 楼wangweicai(关外才子)回复于 2003-01-04 17:14:14 得分 0

最后,告诉你,结构定义时前后名称不要相同。  
  typedef   tagXYZ  
  {  
      double   x,y,z;  
  }XYZ,   *PXYZ;  
  typedef   tagXY  
  {  
      double   x,y;  
  }XY,   *PXY;Top

14 楼wangweicai(关外才子)回复于 2003-01-04 17:16:16 得分 0

对不起:  
  忘了struct   了  
  呵呵呵呵  
  ^_^     ^_^Top

15 楼huzht()回复于 2003-01-04 17:24:55 得分 0

我的IE有问题,只能看到第一行,所以我粘的是什么我也不知道  
   
  好像机子有病毒,好慢呀Top

16 楼huzht()回复于 2003-01-04 17:29:59 得分 0

我把结构定义和类分开了,可出现了新问题:  
  --------------------Configuration:   exp_2   -   Win32   Debug--------------------  
  Compiling   resources...  
  Compiling...  
  StdAfx.cpp  
  Compiling...  
  exp_2.cpp  
  exp_2Dlg.cpp  
  exp.cpp  
  d:\保存文件\试验工程\exp_2\exp.cpp(60)   :   fatal   error   C1010:   unexpected   end   of   file   while   looking   for   precompiled   header   directive  
  Generating   Code...  
  Error   executing   cl.exe.  
   
  exp_2.exe   -   1   error(s),   0   warning(s)  
  Top

17 楼huzht()回复于 2003-01-04 17:31:42 得分 0

我不知道上面粘的你们能不能看见,我只能看见第一行,但你们的我却都能看见  
   
  Top

18 楼arvid_gs(west)回复于 2003-01-04 18:15:13 得分 0

废话Top

相关问题

  • 急啊!!服务器2003SEVER,运行.Net程序提示如下错误!
  • 急需大侠帮助!正在调试的一段程序出现如下错误!关于java.lang.NullPointerException的错误!
  • 请教,一个比较急的问题,我的程序打开编译时出现如下错误,谢谢!
  • 程序错误如下,请帮忙!!!!!谢谢谢谢!!!!!!!!
  • 我写的proc程序在运行是出现如下错误:
  • 程序编译出现如下错误,怎么改,为什么?
  • DirectDraw程序编译时提示如下错误
  • 在ECLIPSE中编写TOMCAT程序,出现如下错误!
  • 写了个小程序,编译出现如下错误.
  • 程序错误

关键词

  • win32
  • 函数
  • 文件
  • exp
  • 结构
  • cpp
  • pxyz
  • pxy
  • xyz
  • xy

得分解答快速导航

  • 帖主:huzht

相关链接

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

广告也精彩

反馈

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