一个很奇怪的全局函数问题,怎么什么方法都不管用呢??

吾子墨鸿 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(参数)仍然会出现上述的错误。

这到底是怎么回事啊??
...全文
120 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
吾子墨鸿 2007-08-15
  • 打赏
  • 举报
回复
问题已经解决!

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧