今天使用xtreme toolkit这个界面库时遇到了这个问题,工程中有两个资源文件,rc 以及 rc2。

首先介绍rc 以及rc2:

有时会很奇怪,为什么工程里会有两个资源文件,对rc我们操作比较多,比较熟悉,但rc2是用来干什么的呢,在rc2文件开头我们看到这样的文字说明:

//
// Drawer.RC2 - resources Microsoft Visual C++ does not edit directly
//

意思是对于在rc2中定义的资源,vc集成开发环境不对它们进行编辑,即在resource选项卡中我们看不到这些资源,因而不能对他们进行可视化编辑。而在rc中定义的资源可以在开发环境中进行可视化编辑。这样做有什么好处呢:

1》rc2 文件可以用于存放由多个不同项目使用的资源。不必为不同的项目多次创建相同的资源,而是可以将它们放在一个 .rc2 文件中,然后将该 .rc2 文件包括在主 .rc 文件中。

2》您应该将不可由资源编辑器编辑的所有资源放在此文件中。比如,我们经常遇到这种情况当我们往资源中加入一些高彩色的图标时,当我们用资源编辑器打开,最后保存时,图标完全变了样,变得很丑,这是由资源编辑器产生的,因为它最多只支持256中颜色,因此为防止我们误用编辑器打开这些图标,我们可以将资源的定义放到rc2中,这样我们在资源编辑器中就看不到它了,免去了误操作。同理也适用于其他的资源,比如光标等。

rc文件:在项目的 .rc 文件的顶部包括 .rc2 文件

接下来解决我碰到的问题:duplicate resource 的意思是资源重复,仔细查看rc和rc2这两个文件,最终发现在rc的尾部我多加了一个在rc2中相同的已经定义的资源。删掉那一行就ok了。