如何调试在 InitInstance 之前崩溃的 C++/CLI MFC 应用程序

问题描述 投票:0回答:2

我有一个使用 MFC(主要)和 COM 构建的可怕的 C++ 应用程序。它链接到多个库并进行大量科学计算。因此,现在我想为其添加一些新功能,并且作为一项组织策略,我们正在使用 .NET 开发所有新功能。因此,这个新的 UI 功能将使用 WPF 构建,并将在现有的 C++ 应用程序中使用。

我知道如何在 C++ 应用程序中使用 WPF 控件,所以这不是问题。问题是,当我尝试在该项目上打开 CLR 时,在链接阶段需要花费大量时间(大约 10 分钟)来执行链接并生成混合模式可执行文件。最后,它成功地做到了这一点并成功创建了可执行文件。但问题是,每当我启动这个可执行文件时,它就会崩溃。我尝试调试 InitInstance 但它在此之前的某个地方崩溃了。我有点不知道接下来要尝试什么。

有人知道这可能是什么原因吗?

混合模式程序集的目标框架是 4.0(应该是),所以这不是这里的问题。

仅供参考,ILDasm 也无法加载此 exe。它花费了很多时间,没有给出错误,但也没有加载它。这给我的印象是管理图像未正确创建。

.net-4.0 com mfc c++-cli mixed-mode
2个回答
0
投票
不确定这是否有必要,但也没什么坏处。新的 MFC 项目在 CWinApp 派生类的构造函数中具有以下内容:

#ifdef _MANAGED // If the application is built using Common Language Runtime support (/clr): // 1) This additional setting is needed for Restart Manager support to work properly. // 2) In your project, you must add a reference to System.Windows.Forms in order to build. System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException); #endif
    

0
投票
这个问题解决了吗??我在 C++ MFC 项目中面临类似的问题,该项目使用启用了 /clr 的程序集。该问题仅发生在调试版本中。

调用堆栈

© www.soinside.com 2019 - 2024. All rights reserved.