一个很奇怪的全局函数问题,怎么什么方法都不管用呢??
吾子墨鸿 2007-08-15 01:23:02 我用的是VC.net2003,其中涉及一个全局函数问题,我试了很多方法都不管用,因此请教高手解
答。难道VC.net2003和VC在全局函数使用上有区别?
这是我在.h中的定义。
#ifndef PUBLIC_H_
#define PUBLIC_H_
#include "Struct.h"
--------------------------------------------------------
class CPublic{
public:
CPublic();
virtual ~CPublic();
//坐标转化,其中a、e为角度
static void CoordinateXYZandRAE(double xorr,double yora,double zore,bool
IsShiftXYZ=TRUE);
};
#endif
.cpp中
#include "stdafx.h"
#include "CPublic.h"
#include <cmath>
//-------坐标转化,其中a、e为角度--------------
CPublic::CPublic()
{
}
CPublic::~CPublic()
{
}
void CPublic::CoordinateXYZandRAE(double &xorr,double &yora,double &zore,bool
IsShiftXYZ)
{
double xr,ya,ze;
if(IsShiftXYZ)
{
xr=xorr*cos(yora)*cos(zore);
ya=xorr*sin(yora)*cos(zore);
ze=xorr*sin(zore);
}
}
在另一.cpp中#include "CPublic.h",然后直接用:
CPublic::CoordinateXYZandRAE(a,b,c,d);
结果出现错误:
c:\documents and settings\pengxiaodong\桌面\filterdesign0731
\filterdesign\cpublic.cpp(17): error C2511: “void CPublic::CoordinateXYZandRAE
(double &,double &,double &,bool)” : “CPublic”中没有找到重载的成员函数
用另外的方法:
在.h中
extern void CoordinateXYZandRAE(double xorr,double yora,double zore,bool
IsShiftXYZ);
在.cpp中
void CoordinateXYZandRAE(double &xorr,double &yora,double &zore,bool IsShiftXYZ)
{............}
在另一.cpp中#include "CPublic.h",然后直接用
CoordinateXYZandRAE(a,b,c,d);
同样报错:
FilterDesign error LNK2019: 无法解析的外部符号 "void __cdecl CoordinateXYZandRAE
(double,double,double,bool)" (?CoordinateXYZandRAE@@YAXNNN_N@Z) ,该符号在函数
"public: void __thiscall CTrackDlg::OnBnClickedBtnPreviewtrack(void)" (?
OnBnClickedBtnPreviewtrack@CTrackDlg@@QAEXXZ) 中被引用
就算在使用的.cpp文件前面加上extern void CoordinateXYZandRAE(参数)仍然会出现上述的错误。
这到底是怎么回事啊??