首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问关于一个extern定义函数的有关问题

2012-03-24 
请教关于一个extern定义函数的问题我在publi.h中定义这样的函数:externvoidCoordinateXYZandRAE(doublexor

请教关于一个extern定义函数的问题
我在publi.h中定义这样的函数:
extern   void   CoordinateXYZandRAE(double   xorr,double   yora,double   zore,bool   IsShiftXYZ=TRUE);
在public.cpp中实现。现在我在另一个对话框中一个按钮单击事件中调用CoordinateXYZandRAE函数中,在开始.h中包含public.h,结果出错。

“FilterDesign   error   LNK2019:   无法解析的外部符号   "void   __cdecl   CoordinateXYZandRAE(double,double,double,bool) "   (?CoordinateXYZandRAE@@YAXNNN_N@Z)   ,该符号在函数   "public:   void   __thiscall   CTrackDlg::OnBnClickedBtnPreviewtrack(void) "   (?OnBnClickedBtnPreviewtrack@CTrackDlg@@QAEXXZ)   中被引用”

我换用::CoordinateXYZandRAE调用,还是出错,请问这是怎么回事!


[解决办法]
问题原因:
请检查你的CPP里面 void CoordinateXYZandRAE(double xorr,double yora,double zore,bool IsShiftXYZ=TRUE) 实现的参数和名字是否正确;
在对话框的头文件请加上 void CoordinateXYZandRAE(double xorr,double yora,double zore,bool IsShiftXYZ=TRUE)这一句,但不用实现,直接用就行了
当函数提供方单方面修改函数原型时,如果使用方不知情继续沿用原来的extern申明,这样编译时编译器不会报错。但是在运行过程中,因为少了或者多了输入参数,往往会照成系统错误,这种情况应该如何解决?

[解决办法]
extern "C " 修饰CoordinateXYZandRAE方法

热点排行