从DLL调用函数时MFC断言错误

时间:2015-09-17 16:57:59

标签: c++ dll mfc

我从DLL上下文中调用此函数,

void CmodguiApp::ReportStatusBarImageCount() {

CMainFrame *frm = nullptr;
auto app = AfxGetApp();
if (nullptr != app) {
     frm = (CMainFrame*)app->GetMainWnd();
}

assert(frm);

frm->setStatusBarImageCount(L"Text");

}

一切都好。 frm不是nullptr。

然后,在下面描述的setStatusBarImageCount内,软件会导致断言错误

可能出现什么问题?

void CMainFrame::setStatusBarImageCount(const wchar_t *str) {

     m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_STATUSBAR_IMAGECOUNT), str);

}

此应用已动态链接MFC。请允许我强调,setStatusBarImageCount函数是从DLL中调用的,而不是从主MFC应用程序调用的。

assertion error

1 个答案:

答案 0 :(得分:1)

这是因为我从自定义线程(https://msdn.microsoft.com/en-us/library/975t8ks0.aspx

调用MFC API

这应该使用自定义消息实现来完成,这是线程安全的(https://msdn.microsoft.com/en-us/library/k35k2bfs.aspx