为什么我的程序会有如下链接错误呢?我是个初学者,自己派生了一个类:
····························
·····························
····························
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.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::Run1(void)" (?Run1@M@@QAEXXZ) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: __thiscall M::M(struct XYZ *,struct XY *)" (??0M@@QAE@PAUXYZ@@PAUXY@@@Z) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::GetDate(struct XYZ *)" (?GetDate@M@@QAEXPAUXYZ@@@Z) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::Run_2(void)" (?Run_2@M@@QAEXXZ) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: __thiscall M::~M(void)" (??1M@@QAE@XZ) already defined in exp_2.objDebug/exp_2.exe : fatal error LNK1169: one or more multiply defined symbols foundError executing link.exe.exp_2.exe - 7 error(s), 0 warning(s)
····························
·····························
····························
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.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::Run1(void)" (?Run1@M@@QAEXXZ) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: __thiscall M::M(struct XYZ *,struct XY *)" (??0M@@QAE@PAUXYZ@@PAUXY@@@Z) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::GetDate(struct XYZ *)" (?GetDate@M@@QAEXPAUXYZ@@@Z) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::Run_2(void)" (?Run_2@M@@QAEXXZ) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: __thiscall M::~M(void)" (??1M@@QAE@XZ) already defined in exp_2.objDebug/exp_2.exe : fatal error LNK1169: one or more multiply defined symbols foundError executing link.exe.exp_2.exe - 7 error(s), 0 warning(s)
解决方案 »
- rename出现debug error但是成功执行了
- 求助 CWindowImpl ATL Object Wizard 下载好了,但是不会安装。
- 想用vc做一个小的搜索程序的话用到什么知识?比如求职搜索.自动抓取一些网站的求职信息之类的
- slider控件问题。。。
- vc socket UDP多客户端传输数据
- 哪些兄弟需要水晶报表9.2中文版,我可以免费上传:)
- 如何改变对话诓的大小?
- d
- 网络上的数据报侦听软件是怎么做的呀?能收到不是发给自己的数据.
- NuMega BoundsChecker 好像不对啊,提示的内存泄漏实际上好像没问题啊
- 如何改变Menu的背景色?急用!
- 各位好,谁能告诉俺如何能得到本地机器的IP地址
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()
{
}
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()
{
}
Linking...
exp_2Dlg.obj : error LNK2005: "public: __thiscall M::M(struct XYZ *)" (??0M@@QAE@PAUXYZ@@@Z) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::Run1(void)" (?Run1@M@@QAEXXZ) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: __thiscall M::M(struct XYZ *,struct XY *)" (??0M@@QAE@PAUXYZ@@PAUXY@@@Z) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::GetDate(struct XYZ *)" (?GetDate@M@@QAEXPAUXYZ@@@Z) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: void __thiscall M::Run_2(void)" (?Run_2@M@@QAEXXZ) already defined in exp_2.objexp_2Dlg.obj : error LNK2005: "public: __thiscall M::~M(void)" (??1M@@QAE@XZ) already defined in exp_2.objDebug/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)
头文件中只做声明并使用#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()
{
}
typedef tagXYZ
{
double x,y,z;
}XYZ, *PXYZ;
typedef tagXY
{
double x,y;
}XY, *PXY;
忘了struct 了
呵呵呵呵
^_^ ^_^
--------------------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)