我有2个基于对话框的项目。我现在的目标是创建另一个简单的主项目,这样当ran中的主项目出现时,将出现两个按钮,当用户单击它们时,将出现相应的两个项目。
我已经将2个项目添加到主项目中。将它们转换为.dll,将.lib文件添加到其他依赖项中并包含路径。我还添加了附加的包含路径,以便可以将两个项目的.h包含到主cpp文件中。
这是我的代码的一部分。这只是一个测试,这就是为什么我只包含1个项目而不是2个项目。
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);"
我如何解决这个问题,或者我做错了什么?任何帮助都将不胜感激。谢谢。
发布于 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)时,两者都是同时使用。
https://stackoverflow.com/questions/57719846
复制相似问题