重生在韩娱txt:关于在DLL中对其他源文件中的函数的调用

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 19:00:56
我创建了一个Active.dll
在Active.h中做了如下声明:
typedef void (*pFunc)(void);
pFunc pSave;
void SetFunc(void (*pFunc)());
.......
在Active.cpp中:
void SetFunc(void (*pFunc)())
{
pSave = pFunc;
}
把从外部传如的一个函数指针保存到pSave中以便调用

然后我在另外一个加载了Active.dll的基于DIALOG工程中的RiancyDlg.h的CRiancyDlg类中声明了一个public函数:
void func();

接着在RiancyDlg.cpp的一个函数中对SetFunc进行了调用:
void CRiancyDlg::func()
{
MessageBox("....");
}

void CRiancyDlg::OnWork()
{
SetFunc(func);
}

然后编译Riancy工程出现以下错误:
error C2664: 'SetFunc' : cannot convert parameter 1 from 'void (void)' to 'void (__cdecl *)(void)'
None of the functions with this name in scope match the target type

请高手指点一下啊,小弟是新手,第一次用函数指针