启动后MFC应用程序崩溃
我只是在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。
我怎么能如果我理解正确的问题解决了这个错误
,你已经创建了一个空的项目和刚添加几行代码到一个新的cpp文件。
如果您想使用Afx支持或MFC,则需要在创建项目时声明。 我建议你让IDE创建一个非-空项目,检查构建并运行,然后开始向其添加代码。
pthread
应由框架为您初始化 - 如果您允许它为您自动生成支持代码。从内存中,至少会创建一个名为theApp
的全局(arggg)变量,类型为CWinApp
,它将初始化它所需的内容,如线程。
请仔细阅读本书的样本,并遵循所有说明。如果这不起作用,可以找一本更好的书。或者购买整本书。或者通过msdn上的tutorials工作。
是的CWinApp,为我工作。还有必要不要离开m_pMainWnd NULL。 – Pyjong
今天,我有我崩溃的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)
使项目再次运行。
错误说明访问了一个NULL指针。请编辑您的问题以包含更完整的示例,最好是[SSCCE](http://sscce.org/)。另外,在调试器中,您应该查看函数调用堆栈以查看代码,其中可能存在问题。 –
我写的所有代码都是第一部分。 winmain.cpp中的属于Microsoft的错误。我知道pThread是NULL。但我不知道程序为什么调用这个文件,为什么这个指针是NULL。 – paytam
谷歌搜索“afxwinmain pthread null”给出了一些结果,例如http://blogs.msdn.com/b/dsvc/archive/2009/06/21/why-afxgetthread-returns-null-in-afxwinmain.aspx你有没有a – doctorlove