关于资源文件加载的问题

Kinglin_sky 2009-03-18 12:26:42
现在在维护一份VC 6.0 的MFC代码, 它的资源文件写在另一个DLL中, 程序通过导入DLL来加载资源文件。 现在我在资源文件中添加了新的资源,在程序中去加载时却出错,所该资源没有定义, 是不是还有替换什么东西,还是缺少其他什么 ?
...全文
106 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xylicon 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Kinglin_sky 的回复:]
szTmpFile.Format(_T("%s\\MainRes.dll"), g_szProgPath);
if (g_resDll==NULL)
{
g_resDll = LoadLibrary(szTmpFile);
}
// 上面是在程序中动态加载。


//下面是使用资源是出错的地方
CString strMsg;
strMsg.LoadString(IDS_STOPSERVICE_NOTIFY);//IDS_STOPSERVICE_NOTIFY为在资源文件中定义的字符串。 编译器报错,

[/Quote]

对IDS_STOPSERVICE_NOTIFY F12 一下看看,是否已经定义了。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Kinglin_sky 的回复:]
做了,那是不行! 除了DLL文件,还须覆盖其他文件吗?
[/Quote]
你确定资源ID改了?
Kinglin_sky 2009-03-18
  • 打赏
  • 举报
回复
szTmpFile.Format(_T("%s\\MainRes.dll"), g_szProgPath);
if (g_resDll==NULL)
{
g_resDll = LoadLibrary(szTmpFile);
}
// 上面是在程序中动态加载。


//下面是使用资源是出错的地方
CString strMsg;
strMsg.LoadString(IDS_STOPSERVICE_NOTIFY);//IDS_STOPSERVICE_NOTIFY为在资源文件中定义的字符串。 编译器报错,
//说IDS_STOPSERVICE_NOTIFY未定义
MessageBoxSkin(strMsg, "", 1, CWnd::FromHandle(m_hMsgWnd));

忘高手指教!
叶落寒山 2009-03-18
  • 打赏
  • 举报
回复
在该程序的资源文件中添加和DLL新添的资源相同的资源ID。
xylicon 2009-03-18
  • 打赏
  • 举报
回复
是不是资源的头文件没更新,最好贴出报错的信息。
oyljerry 2009-03-18
  • 打赏
  • 举报
回复
你可以做一个简单的测试,把DLL中某个字符串的内容修改一下,不增加新的,然后调用,看调用的字符串是否发生了变化,这样可以判断你的DLL是否正确覆盖

2. 你的资源ID是否跟你定义的一致...
Kinglin_sky 2009-03-18
  • 打赏
  • 举报
回复
做了,那是不行! 除了DLL文件,还须覆盖其他文件吗?
oyljerry 2009-03-18
  • 打赏
  • 举报
回复
添加资源,重新编译DLL,然后覆盖原来的DLL,然后加载的时候使用新的资源ID等
Kinglin_sky 2009-03-18
  • 打赏
  • 举报
回复
好了,搞好了, 是程序资源中没有添加,谢谢各位参与!
给分了!

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧