MFC封装的DLL,运行错误
在DLL中封装了MFC,如在MyOpenFun函数中
extern "C" __declspec(dllexport) int __stdcall MyOpenFun(HWND hApp)
{
CMyDialog test;
AFX_MANAGE_STATE(AfxGetStaticModuleState());
test.DoModal();
}
然后建立dialog的类,在点确定时响应IDOK消息,但是会出现内存错误:
access violation at address 0844cc76 in module "MyDll.dll".write of address FFFFFDF4.
(很奇怪,使用VC进行调试时,不会出现内存错误,可以正常执行。可是不使用VC调试,而是直接运行
时,就会出现内存错误。使用ollydbg调试时会在GetDlgItemText(IDC_EDIT_FZ,m_sEdit_FZ)上发生内存错误,
并且将GetDlgItemText(IDC_EDIT_FZ,m_sEdit_FZ)给注释后,就不会出现内存错误。)
在GetDlgItemText函数中响应IDOK消息
void CMyDialog::OnOK()
{
// TODO: Add extra validation here
//IDC_EDIT_FZ是edit控件的id,m_sEdit_FZ是edit控件的对应的类成员变量,为CString类型
GetDlgItemText(IDC_EDIT_FZ,m_sEdit_FZ);
int i = m_sEdit_FZ.GetLength();
//memcpy(stMyData.FFilterStr,sFilterStr,i+1);
memcpy(stMyData.FFilterStr, m_sEdit_FZ.GetBuffer(i), i);
CDialog::OnOK();
}
请教各位,为什么会出现错误,如果不使用GetDlgItemText(IDC_EDIT_FZ,m_sEdit_FZ);函数得到Edit
控件的内容,就可以使用MFC,而仅仅在GetDlgItemText()函数中出错,请帮忙解决,谢谢!