【发布时间】:2020-08-14 18:56:32
【问题描述】:
我正在将一个项目从 VS2008 迁移到 VS2013。目前在运行应用程序时遇到问题。 它说:
**Debug assertion failed**
Program C:\Windows\SYSTEM32\mfc120d.dll
FILE: f:\dd\vctools\vclibs\ship\atlmfc\src\mfc\doctempl.cpp
LINE: 25
这是代码中出现问题的地方:
cpFormDefDocTemplate = new CMultiDocTemplate(
MAIDR_MAINFRAME,
RUNTIME_CLASS(EHF_ManagerDoc),
RUNTIME_CLASS(EHF_ManagerChildFrame), // main SDI frame window
RUNTIME_CLASS(EHF_ManagerView));
我不确定如何继续进行此操作。需要的帮助。提前致谢。
【问题讨论】:
-
安装了哪些版本的 Visual C++ Redistributable Packages?
-
VS2008 和 VS2013
-
您是否正在查看断言的正确调用堆栈级别?这看起来像客户端代码(即您的代码),还是 MFC 代码?从字面上打开 f:\dd\vctools\vclibs\ship\atlmfc\src\mfc\doctempl.cpp (或者你实际安装它的任何地方 - 它可能不是 f:...)。确保它是 VS2013 源。转到第 25 行。该文件的我的版本 (VS2008) 位于带有一堆 ASSERT 的 CDocTemplate 类的 ctor 中。在那里断言失败(可能在您显示的代码的调用中)。
-
Assertion Failed Dialog Box。所以继续,按“重试”(正如对话框已经告诉你的那样)。这会告诉你,你没有建立哪个条件。这是您的代码中的错误,而不是 MFC。也与迁移无关。
-
是的,我已经检查了上述路径中的代码。它是VS2013源码。它在 VS2008 中工作的代码相同。为什么不在 VS2013 中?
标签: c++ visual-studio visual-studio-2013 mfc