2011-03-02 96 views
1

我的應用程序對AfxGetApp()的任何調用都返回NULL,任何人都可以幫忙嗎?AfxGetApp返回NULL

這是一個從.dll項目轉換而來的.exe項目,因此可能會丟失一些項目配置。我從另一個使用.exe嚮導創建的項目複製配置,但不起作用。另外,我有一個全球性的CWinApp。

回答

1

檢查您的預處理器定義。刪除_AFXEXT。

+1

這是爲什麼? _AFXDLL默認情況下在新創建的MFC .exe項目中繼承。 – korbes 2011-03-03 13:36:44

+1

你說得對,那就是「MFC的DLL版本」。呃,我討厭所有這些該死的宏的MFC。 _AFXEXT。 – 2011-03-03 13:47:13

+0

這一個已經不存在了,也不在原來的DLL項目上。 – korbes 2011-03-03 18:24:13

0

我有一個類似的問題,建立一個DLL,如果我複製此代碼(從另一個DLL拍攝)AfxGetApp()返回正確的指針:

CWinApp theApp; 

using namespace std; 

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
{ 
    int nRetCode = 0; 

    // initialize MFC and print and error on failure 
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) 
    { 
     // TODO: change error code to suit your needs 
     _tprintf(_T("Fatal Error: MFC initialization failed\n")); 
     nRetCode = 1; 
    } 
    else 
    { 
     // TODO: code your application's behavior here. 
    } 

    return nRetCode; 
}