2013-11-27 299 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)使項目再次運行。