首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建可以运行其他dll的MFC。项目运行后调试断言失败

问创建可以运行其他dll的MFC。项目运行后调试断言失败
EN

Stack Overflow用户
提问于 2019-08-30 10:39:08
回答 1查看 165关注 0票数 0

我有2个基于对话框的项目。我现在的目标是创建另一个简单的主项目,这样当ran中的主项目出现时,将出现两个按钮,当用户单击它们时,将出现相应的两个项目。

我已经将2个项目添加到主项目中。将它们转换为.dll,将.lib文件添加到其他依赖项中并包含路径。我还添加了附加的包含路径,以便可以将两个项目的.h包含到主cpp文件中。

这是我的代码的一部分。这只是一个测试,这就是为什么我只包含1个项目而不是2个项目。

代码语言:javascript
复制
enter code here

// MAIN3Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "MAIN3.h"
#include "MAIN3Dlg.h"
#include "afxdialogex.h"
#include "Resource3.h"
#include "test3Dlg.h"
.
.
.
void CMAIN3Dlg::OnBnClickedCancel()
{
    Ctest3Dlg TEST3_DIALOG;
    TEST3_DIALOG.DoModal();
}

程序可以构建,但是当我运行它时,我得到一个调试断言失败!错误指向以下行:"ASSERT(AfxGetThread() == NULL);"

我如何解决这个问题,或者我做错了什么?任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-08-31 16:49:23

由于MFC的初始化方式,在主可执行文件和DLL中使用MFC类都会导致很多问题。通常,您需要将DLL定义为MFC Extension DLL (即使您实际上没有添加扩展),以便所有模块共享相同的MFC实例。这是而不是一项微不足道的任务。

你可以在这里获得更多信息:https://docs.microsoft.com/en-us/cpp/build/extension-dlls?view=vs-2019

据我所知,这是唯一的方式,你可以切换控制之间的可执行文件和动态链接库(S)时,两者都是同时使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57719846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档