2012-08-08 70 views
0

AFX_IDP_PARSE_INT是標準MFC錯誤消息(它在afxres.h中定義)的標識,但在我的項目中未能加載,這意味着LoadString返回FALSE,GetLastError返回ERROR_RESOURCE_NAME_NOT_FOUND,CString保持空白。LoadString(AFX_IDP_PARSE_INT)在mfc exe中失敗(不在dll中)

發生這種情況甚至當我嘗試InitInstanse的開始加載它:

BOOL CMyLegacyProject::InitInstance() 
{ 
    CString string; 
    if (!string.LoadString(AFX_IDP_PARSE_INT)) 
      AfxMessageBox(_T("Failed.")); 
} 

此相同的代碼工作。但是一個新的項目, - MFC的相同的連接(我鏈接到它靜態),同樣WINVER ,我試着將它與我的舊項目做得相似,但我無法在新開始的項目上重現錯誤。

+0

可能意味着你在代碼中有一個錯誤在其他地方。我會嘗試系統地從舊項目中刪除代碼,直到錯誤消失。當它消失時,您刪除的最後一段代碼可能是錯誤代碼。我會從出現此錯誤時上次處理的代碼開始。 – john 2012-08-08 10:11:22

+0

你可以檢查'GetLastError'來看它是否返回可能相關的東西嗎? – 2012-08-08 10:12:37

+0

它返回ERROR_RESOURCE_NAME_NOT_FOUND。 – sashoalm 2012-08-08 10:57:33

回答

0

看起來您的資源構建不正確。確保你的.rc文件也包含所有的AFX資源。首先,我嘗試從頭開始構建一個全新的項目,測試加載字符串,然後查看默認的.rc文件的外觀。

應該包括一個名爲「afxres.rc」文件,即你的RC應該有它這樣的事情:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 
#ifdef _WIN32 
LANGUAGE 9, 1 
#pragma code_page(1252) 
#endif //_WIN32 
#include "res\MyRes.rc2" // non-Microsoft Visual C++ edited resources 
#include "afxres.rc"   // Standard components 
#include "afxprint.rc"  // printing/print preview resources 
#endif 
+0

謝謝,原來我不包括「afxres.rc」。當我將它添加到我的rc文件時,字符串現在正在加載。我記得我一次修改了rc包含了一些額外的.rc2文件,而我一定是在沒有意識到的情況下刪除了它。奇怪的是我有一個TEXTINCLUDE節,它有一行「#include」「afxres.rc」「,但它可能沒有效果。 – sashoalm 2012-08-08 13:38:53