调试错误:找不到字符串资源 7176

Posted

技术标签:

【中文标题】调试错误:找不到字符串资源 7176【英文标题】:Debug Error: String Resource 7176 was not found 【发布时间】:2015-12-23 09:16:45 【问题描述】:

我已将我的项目从 VC++.NET 2003 升级到 VS2010。我收到。我可以看到字符串表包含字符串资源 7176 的字符串,但是当我调用 Custom_MessageBox() 时仍然显示错误,这在同一项目的其他模块中运行良好。

在TestResource.rh中

#define IDS_SHOWWARNING_TEST        7176

在TestResource.rc中

#include "DevControl.rh"

STRINGTABLE
BEGIN
IDS_SHOWWARNING_TEST           "Test1"
END

在TestResource.cpp中

 BOOL TestFunc(hParentWnd)

     LPCTSTR myString = "Hello"
     Custom_MessageBox( hParentWnd,
                  MAKEINTRESOURCE(IDS_SHOWWARNING_TEST),
                  MB_OK | MCC_INFORMATION );
 

如果我通过 myString 代替 MAKEINTRESOURCE(IDS_TEST),那么它可以完美运行。

请找到Custom_MessageBox() 的定义。如果我看到 pszText 的值,它会显示错误的指针。 MAKEINTRESOURCE 无法评估 IDS_SHOWWARNING_TEST。不知道是什么原因。

const int CUS_RETURN_ERROR        = (int)0xFFFF;

int cdecl Custom_MessageBox( HWND hwndOwner, LPCTSTR pszText, UINT uStyle, ... )

   // handle variable parms
   va_list sVarArgs;
   va_start(sVarArgs, uStyle);

   if (!pszText)
      return CUS_RETURN_ERROR;

   CMDMsgDialog Dlg;
   int nReturn = Dlg.MessageDialog(hwndOwner, pszText, uStyle, sVarArgs);

   va_end(sVarArgs);
   return nReturn;

【问题讨论】:

Custom_MessageBox 在做什么?它可以处理字符串资源吗?您的代码是否调用 AfxSetResourceHandle?字符串可以在InitInstance开头加载吗? 如果你调用MessageBox而不是`Custom_MessageBox`会发生什么? 你需要显示Custom_MessageBox的源代码,因为那是失败的函数。 我已将“hParentWnd”替换为“AfxGetMainWnd()->GetSafeHwnd()”,现在它工作正常。不确定为什么? @S.Shil 显示您如何称呼TestFunc 【参考方案1】:

您已在 TestResource.rh 中定义了 IDS_SHOWWARNING_TEST:

#define IDS_SHOWWARNING_TEST        7176

但是,在您的 TestResource.rc 中包含不同的头文件:

#include "DevControl.rh"

宏 IDS_SHOWWARNING_TEST 可能也在该文件中定义,具有不同的值。

【讨论】:

我已修改此代码以放在社交网站上,因为我不想显示实际代码,所以我错过了将“DevControl.rh”替换为 TestResource.rh。这只是一个例子。 我只能看到您发布的代码,而不是您计算机上的代码 :) 无论如何,错误清楚地表明您确实正确传递了字符串 ID(正如您所期望的那样,它是 7176,并且这就是错误消息中的内容)。这意味着具有该 ID 的字符串在所搜索的资源中为 NOT。您是否有多个资源模块(在 exe 和 dll 中)?您有多种语言资源吗?

以上是关于调试错误:找不到字符串资源 7176的主要内容,如果未能解决你的问题,请参考以下文章

eclipse debug 调试找不到资源问题解决

任务“:app:processDebugResources”的颤振执行失败。 AAPT:错误:找不到资源字符串/app_name

逻辑?调试多次,找不到错误

初始化 ADB 时出错:找不到调试桥

在使用vs2010时,说发生错误,找不到文件,大神求助

设置 switchStyle - 找不到错误资源 - 为啥?