从 DLL 调用函数时 MFC 断言错误
MFC Assertion error when calling function from DLL
我正在从 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 应用程序中调用的。
这是因为我从自定义线程 (https://msdn.microsoft.com/en-us/library/975t8ks0.aspx)
调用 MFC API
这应使用线程安全的自定义消息实现来完成(https://msdn.microsoft.com/en-us/library/k35k2bfs.aspx)
我正在从 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 应用程序中调用的。
这是因为我从自定义线程 (https://msdn.microsoft.com/en-us/library/975t8ks0.aspx)
调用 MFC API这应使用线程安全的自定义消息实现来完成(https://msdn.microsoft.com/en-us/library/k35k2bfs.aspx)