2013-11-27 69 views
1

我只是在Windows8 x64上的visual studio 2012中创建一个win32项目。该项目首先是空的。我将一个简单的source.cpp文件添加到项目中。我粘贴这些代码行(这是一本书的样本)。启动后MFC应用程序崩溃

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


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

程序崩溃winmain.cpp在AfxWinMain符合

if (!pThread->InitInstance()) 

的错误是

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

我怎么能如果我理解正确的问题解决了这个错误

+0

错误说明访问了一个NULL指针。请编辑您的问题以包含更完整的示例,最好是[SSCCE](http://sscce.org/)。另外,在调试器中,您应该查看函数调用堆栈以查看代码,其中可能存在问题。 –

+0

我写的所有代码都是第一部分。 winmain.cpp中的属于Microsoft的错误。我知道pThread是NULL。但我不知道程序为什么调用这个文件,为什么这个指针是NULL。 – paytam

+0

谷歌搜索“afxwinmain pthread null”给出了一些结果,例如http://blogs.msdn.com/b/dsvc/archive/2009/06/21/why-afxgetthread-returns-null-in-afxwinmain.aspx你有没有a – doctorlove

回答

2

,你已经创建了一个空的项目和刚添加几行代码到一个新的cpp文件。

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

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

请仔细阅读本书的样本,并遵循所有说明。如果这不起作用,可以找一本更好的书。或者购买整本书。或者通过msdn上的tutorials工作。

+0

是的CWinApp,为我工作。还有必要不要离开m_pMainWnd NULL。 – Pyjong

0

今天,我有我崩溃的MFC testproject用的调用堆栈古怪相似:

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. 

我有工作了类似的测试项目很好,所以我对连接器设置进行了区分,并且损坏的项目丢失了交换机(GUI - >属性 - >链接器 - >子系统:“”)。

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