读书人

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

发布时间: 2012-03-24 14:00:46 作者: rapoo

请教关于一个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方法

读书人网 >C++

热点推荐