Сегодня я наконец разобрался, как создать exe-файл из нескольких rc-файлов. Обычно для этого пытаются использовать три пути:
1. Играются с блоками TEXTINCLUDE. Это не работает, потому что начинаются проблемы с путями к файлам.
2. Создают lib, в который включают нужные ресурсы. Это вообще не работает: поскольку ресурсам присваиваются одинаковые имена, линкер ресурсы из библиотек игнорирует.
3. Включают в проект несколько rc-файлов. Это работает, но только до тех пор, пока среди ресурсов нет иконок. Как только появляются иконки, появляется следующая диагностика:
CVTRES : fatal error CVT1100: duplicate resource. type:ICON, name:1, language:0x0409
Это при том, что иконок с номером 1 среди ресурсов, казалось бы, не наблюдается.
Что происходит? Дело в том, что иконка кладётся в ресурсы как группа bitmap'ов с разными разрешениями. Идентификатор ресурса присваивается группе, в которой лежат ссылки на конкретные битмапы. А битмапам присваиваются числовые идентификаторы, начиная с 1. Вот они и конфликтуют друг с другом.
( Что делать? )
1. Играются с блоками TEXTINCLUDE. Это не работает, потому что начинаются проблемы с путями к файлам.
2. Создают lib, в который включают нужные ресурсы. Это вообще не работает: поскольку ресурсам присваиваются одинаковые имена, линкер ресурсы из библиотек игнорирует.
3. Включают в проект несколько rc-файлов. Это работает, но только до тех пор, пока среди ресурсов нет иконок. Как только появляются иконки, появляется следующая диагностика:
CVTRES : fatal error CVT1100: duplicate resource. type:ICON, name:1, language:0x0409
Это при том, что иконок с номером 1 среди ресурсов, казалось бы, не наблюдается.
Что происходит? Дело в том, что иконка кладётся в ресурсы как группа bitmap'ов с разными разрешениями. Идентификатор ресурса присваивается группе, в которой лежат ссылки на конкретные битмапы. А битмапам присваиваются числовые идентификаторы, начиная с 1. Вот они и конфликтуют друг с другом.
( Что делать? )