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

标签 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

最佳答案

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

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

关于c++ - 从 DLL 调用函数时 MFC 断言错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635971/

相关文章:

c++ - constexpr std::optional 重置

c++ - 影响格雷厄姆寻找凸包算法的未知错误

dll - F#:Microsoft.FSharp.Data.TypeProviders 是否需要配置文件 47?

c++ - 使用 CFBundleCreate 在 Mac 上使用 C++ 加载动态共享库 (DLL)

.net - CUDA - 维护指向全局内存的指针

c++ - 具体对接框架

c++ - 如何避免文件扩展名超过三个字符的 CFileFind 误报?

c++ - 如何找到 `std::set` 的中位数

c++ - 如何将菜单从资源插入到现有菜单?

c++ - 无限循环发生在哪里?