我只是在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。
如何解决此错误
答案 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)
,使项目再次运行。