2009-10-29 82 views
2

MFC无法启动我的对话框,因为它无法找到资源标识符。对话框位于单独的.lib文件中(因此它有一个单独的.rc文件,我假设它与我的.exe文件中的文件存在冲突)。我应该如何处理这种情况?静态库文件中的资源 - MFC

+0

你能提供更多关于“未能启动”的细节吗?什么是特定症状? – 2009-10-29 07:23:10

+0

我会打电话给DoModal,什么都不会发生。进入DoModal函数显示资源无法加载。 – Smashery 2009-10-29 07:40:20

回答

4

在为.exe文件rc文件,添加一行:

#include "YourLibResourceFile.rc" 

然后,在.exe文件的项目设置,添加一个额外的include目录到YourLibResourceFile.rc,在资源/其他包含目录。

1

确保您的所有资源ID都是唯一的。

+0

这个要求是由组成的。例如,您可以拥有与对话框资源具有相同ID的位图资源。即使在相同的对话框中,您也可以在具有相同ID的对话框中拥有多个子控件(对于STATIC控件通用)。尽管遵循您的建议是安全的,但它不必要地限制了您可以在项目中使用的资源总数。 – IInspectable 2015-09-11 13:26:19

+0

我想这个答案在当时对我来说很有意义,但这是6年前的事。我不明白为什么这会影响OP的问题。试图删除这个答案,但它有一个upvote,这表明它帮助了某人..... – demoncodemonkey 2015-09-11 13:49:01

2

不能将资源(.rc文件内容)存储在静态库中。由于您只能有一个“main”.rc文件,所以其他所有.rc文件都必须使用#include语句包含在该语句中,例如Smashery(编辑:哦!Smashery,您是OP!)所解释的。

+0

是的,我意外地发现了它自己= P谢谢你的回答! +1 – Smashery 2009-11-05 01:01:19