MFC应用程序在启动后立即崩溃

时间:2013-11-27 12:48:50

标签: c++ visual-studio-2012 mfc

我只是在Windows8 x64上的visual studio 2012中创建一个win32项目。该项目首先是空的。我在项目中添加了一个简单的source.cpp文件。我粘贴这些代码行(这是一本书的样本)。

#include <afxwin.h>
#include <windows.h>


struct CSimpleApp : public CWinApp
{ 
BOOL InitInstance() { return TRUE; }
}; 

程序在AfxWinMain的winmain.cpp中崩溃

if (!pThread->InitInstance())

错误是

Win32Project2.exe中0x0F6AD5D2(mfc110ud.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000000。

如何解决此错误

2 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题,你就创建了一个空项目,并将这些代码行添加到一个新的cpp文件中。

如果要使用Afx支持或MFC,则需要在创建项目时说明。 我建议你让IDE创建一个 -empty项目,检查构建和运行,然后开始向它添加代码。

pthread应该由框架为您初始化 - 如果您允许它为您自动生成代码。从内存中,它至少会创建一个名为theApp的类型为CWinApp的全局(arggg)变量,它将初始化所需的东西,如线程。

仔细阅读本书(样本)并按照所有说明进行操作。如果这不起作用,那就买一本更好的书。或者购买整本书。或者通过msdn上的tutorials工作。

答案 1 :(得分:1)

今天,我有一个MFC测试项目的我的崩溃类似奇怪的调用堆栈:

    mfc100u.dll!AfxWinMain()  + 0x69 bytes  
>   my.exe!__tmainCRTStartup()  Line 547 + 0x24 bytes   C
    kernel32.dll!BaseThreadInitThunk()  + 0xd bytes 
    ntdll.dll!RtlUserThreadStart()  + 0x21 bytes    

和访问违规:

Unhandled exception at 0x69e97505 (mfc100u.dll) in my.exe: 0xC0000005: Access violation reading location 0x0000000000000000.

我有一个类似的测试项目,工作得很好,所以我对链接器设置进行了分析,然后我就开始了。损坏的项目缺少 /SUBSYSTEM 开关(GUI - &gt;属性 - &gt;链接器 - &gt;子系统:&#34;&#34;)。

将此设置中的空值修复为Console (/SUBSYSTEM:CONSOLE),使项目再次运行。