我是一名刚开始学习MFC的大学生,最近和几名学长一起编了一个简单的P2P通信软件,但是发现程序一运行就会出现
ASSERT(afxCurrentResourceHandle != NULL)
的错误。只在DEBUG版本有,RELEASE版本没有这个问题。而且只要选“忽略”,程序就能正常运行。
从断言上看,是资源句柄不为空,但是程序刚开始运行(连OnInitDialog()都还没有执行),怎么会出现有这种错误呢?请问各位高手,这是怎么回事呢??
我刚刚开始学,分很少,请见谅。
ASSERT(afxCurrentResourceHandle != NULL)
的错误。只在DEBUG版本有,RELEASE版本没有这个问题。而且只要选“忽略”,程序就能正常运行。
从断言上看,是资源句柄不为空,但是程序刚开始运行(连OnInitDialog()都还没有执行),怎么会出现有这种错误呢?请问各位高手,这是怎么回事呢??
我刚刚开始学,分很少,请见谅。
我没有用DLL啊。刚开始学,还不会用呢。
我在整个程序中都查了,也没有调用afxsetsource啊。嘿嘿,我是个新手,不太明白是怎么回事。能不能说的稍微详细一点点,谢谢了!
我的程序里也没有这种文件啊。
嘿嘿,我是个新手,刚开始学。高手能不能说得稍微详细一点点,或者告诉我应该去看书的那一部分内容。
谢谢啊,谢谢!
_AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()
{ return afxCurrentWinApp; }
_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
{ ASSERT(afxCurrentInstanceHandle != NULL);
return afxCurrentInstanceHandle; }
_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
这里出错!!{ ASSERT(afxCurrentResourceHandle != NULL);
return afxCurrentResourceHandle; }
_AFXWIN_INLINE void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource)
{ ASSERT(hInstResource != NULL); afxCurrentResourceHandle = hInstResource; }
_AFXWIN_INLINE LPCTSTR AFXAPI AfxGetAppName()
{ ASSERT(afxCurrentAppName != NULL); return afxCurrentAppName; }
_AFXWIN_INLINE COleMessageFilter* AFXAPI AfxOleGetMessageFilter()
{ ASSERT_VALID(AfxGetThread()); return AfxGetThread()->m_pMessageFilter; }
_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
{ CWinThread* pThread = AfxGetThread();
return pThread != NULL ? pThread->GetMainWnd() : NULL; }Disassenbly
--- F:\9782\vc98\mfc\mfc\include\afxwin1.inl ----------------------------------
1: // This is a part of the Microsoft Foundation Classes C++ library.
2: // Copyright (C) 1992-1998 Microsoft Corporation
3: // All rights reserved.
4: //
5: // This source code is only intended as a supplement to the
6: // Microsoft Foundation Classes Reference and related
7: // electronic documentation provided with the library.
8: // See these sources for detailed information regarding the
9: // Microsoft Foundation Classes product.
10:
11: // Inlines for AFXWIN.H (part 1)
12:
13: #ifdef _AFXWIN_INLINE
14:
15: // Global helper functions
16: _AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()
17: { return afxCurrentWinApp; }
5F47D350 push ebp
5F47D351 mov ebp,esp
5F47D353 call AfxGetModuleState (5f492691)
5F47D358 mov eax,dword ptr [eax+4]
5F47D35B pop ebp
5F47D35C ret
18: _AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
19: { ASSERT(afxCurrentInstanceHandle != NULL);
5F47D35D push ebp
5F47D35E mov ebp,esp
5F47D360 push ebx
5F47D361 push esi
5F47D362 push edi
5F47D363 call AfxGetModuleState (5f492691)
5F47D368 cmp dword ptr [eax+8],0
5F47D36C jne AfxGetInstanceHandle+22h (5f47d37f)
5F47D36E push 13h
5F47D370 push offset _szAfxWinInl (5f4ae1d8)
5F47D375 call AfxAssertFailedLine (5f478f30)
5F47D37A test eax,eax
5F47D37C je AfxGetInstanceHandle+22h (5f47d37f)
5F47D37E int 3
5F47D37F xor eax,eax
5F47D381 test eax,eax
5F47D383 jne AfxGetInstanceHandle+6 (5f47d363)
20: return afxCurrentInstanceHandle; }
5F47D385 call AfxGetModuleState (5f492691)
5F47D38A mov eax,dword ptr [eax+8]
5F47D38D pop edi
5F47D38E pop esi
5F47D38F pop ebx
5F47D390 pop ebp
5F47D391 ret
21: _AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
22: { ASSERT(afxCurrentResourceHandle != NULL);
5F47D392 push ebp
5F47D393 mov ebp,esp
5F47D395 push ebx
5F47D396 push esi
5F47D397 push edi
5F47D398 call AfxGetModuleState (5f492691)
5F47D39D cmp dword ptr [eax+0Ch],0
5F47D3A1 jne AfxGetResourceHandle+22h (5f47d3b4)
5F47D3A3 push 16h
5F47D3A5 push offset _szAfxWinInl (5f4ae1d8)
5F47D3AA call AfxAssertFailedLine (5f478f30)
5F47D3AF test eax,eax
5F47D3B1 je AfxGetResourceHandle+22h (5f47d3b4)
5F47D3B3 int 3 (停在这里了!!!!)
5F47D3B4 xor eax,eax
5F47D3B6 test eax,eax
5F47D3B8 jne AfxGetResourceHandle+6 (5f47d398)
23: return afxCurrentResourceHandle; }