静态回调函数的内存访问冲突

时间:2011-10-07 10:56:09

标签: visual-c++ callback function-pointers static-methods access-violation

我有一个C ++ DLL,我将指向静态函数的指针作为回调:

static void CallBackFunc(int num);

为了让这个函数访问我的其余代码,我有一个指向标题中类的指针:

static void* m_obj;

并在代码中:

void* CPPUDlg::m_obj;

并且在我的静态函数中:

CPPUDlg* m_pointer = (CPPUDlg*)m_obj;

m_pointer->OnSerialMsg(num);

这允许回调调用非静态函数,但是当该函数调用applcation中其他类中的其他函数时,对于任何非静态变量的内存访问冲突都会出错。

有人能发现我做错了吗?我是否需要所有类的静态实例或类似的东西?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

m_obj是否设置为活动对象? - sharptooth

非常感谢你的评论。

我查了一下,忘了设置m_obj

在我的初始化中,我现在设置m_obj = this;

一切都很完美!

谢谢!