Разобрался я со сборкой под MSVC.
Ехе-ник собираю, но фиговина получается....
1) Если в папке проекта нет *.hbp - то ехе-ник соберётся.
2) Если в папке проекта есть *.hbp, но в нём нет строк
# project Resources
xxxxxxx.rc
yyyyyyy.rc
То тоже будет счастье - ехе-ник соберётся.
3) Если в папке проекта есть *.hbp и перечень хоть одного .rc
то дело труба - ехе-ник НЕ соберётся !!!
Будут такие ошибки:
CVTRES : fatal error CVT1100: повторяющийся ресурс. тип: ICON, имя: 4, язык: 0x0409
CVTRES : fatal error CVT1100: duplicate resource. type:BITMAP, name:MAIL32, language:0x0409
LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден Блин MSVC линковщик тупее BCC, ему нужно только один супер-RC-файл, содержащий все .RC-файлы проекта.
Приплыли...
Теперь понятна мне ситуация, почему не собирается мой проект Tsb_composite.hbp
hbmk2.exe компилирует ресурсы Tsb_composite.rc, а потом _temp.rc повторно с
одинаковыми индефикаторами.
http://qaru.site/questions/10407466/fatal-error-cvt1100-duplicate-resource-typeicon-name1-c-visual-studio-c-2010 Почитайте, очень интересное чтиво !
См. Ниже объяснение от Microsoft:
Гэри Чанг опубликовал это интересное объяснение в другом месте в сети:
......
Таким образом, с текущим компилятором VC++, единственное, что можно сделать в этом случае,
если вы хотите иметь несколько файлов ресурсов, - сохранить все ресурсы значков (и курсора)
в одном файле .rc. Это позволит редактору ресурсов VC сохранить уникальные идентификаторы RT_ICON. Пожелайте, чтобы это помогло и спасибо за ваше понимание! С наилучшими пожеланиями,
Гэри Чанг Поддержка сообщества Microsoft Блин уже 2019 год на носу, а они только с одним .rc файлом работают до сих пор...
В случае с BCC 5.5.1 происходит по другому.
Ему без разницы сколько в *.hbp перечисленно .rc-файлов,
BCC или hbmk2.exe (я не знаю) берет ВСЕ файлы *.rc из папки проекта и
преобразует их в *.res и далее в командной строке их перечисляет, для сборки.
Отличное решение !
Как бы и VC заставить это сделать ?
У меня в проекте 27 файлов *.rc - это из-за того что BCC не может собирать большие ресурсы,
пришлось их бить на части.
Мне знакомый С-ник подсказал решение, можно создать all.rc файл и в нём перечислить
все .rc файлы проекта, включая и _temp.rc
1) Может можно как то сделать автоматом перечисление всех .rc в _temp.rc ?
Это вопрос к Григорию ! Кто знает как - подскажите.
2) Как можно запретить hbmk2.exe обрабатывать случайно написанные в My.hbp *.rc ?
# project Resources
xxxxxxx.rc
yyyyyyy.rc
Ну бывает, проглядел сборку ресурсов программист...
3) Нужно убрать ошибку при сборке (если есть свои данные в *.rc-файле) :
CVTRES : fatal error CVT1100: duplicate resource. type:VERSION, name:1, language:0x0409
Т.е. в файле minigui.rc есть строка VS_VERSION_INFO VERSIONINFO
и в моём *.rc-файле тоже есть такое же описание. Конфликт интересов...
Мне предложили такое решение:
#include <winver.h>
#ifndef __VERSION_INFO
VS_VERSION_INFO VERSIONINFO
FILEVERSION MG_VER_FILE
PRODUCTVERSION MG_VER_PROD
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0" /* LANGUAGE: US English (0x0409), ENCODING: Unicode (1200/0x04B0) */
BEGIN
VALUE "Comments", "See LICENSE.txt for licensing terms." "\0"
VALUE "CompanyName", MG_NAME "\0"
VALUE "FileDescription", MG_NAME "\0"
VALUE "FileVersion", MG_VER_FILE_STR "\0"
VALUE "LegalCopyright", "Copyright ? 2005-2017 MiniGUI Team" "\0"
VALUE "ProductName", MG_NAME "\0"
VALUE "ProductVersion", MG_VER_PROD_STR "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 0x04B0 /* LANGUAGE: US English (0x0409), ENCODING: Unicode (1200/0x04B0) */
END
END
#endif
А в своём одном .rc файле (можно специально обозначить - version.rc) писать так:
#define __VERSION_INFO
1 VERSIONINFO
FILEVERSION 1,0
PRODUCTVERSION 1,0
FILEOS 0x4
FILETYPE 0x1
........
4) Как убрать ошибку при сборке, если .rc-файл не оканчивается пустой строкой ?
Т.е. в конце файла должно быть всегда CRLF
Ошибка вот такая:
C:\MiniGuiVC\...\Demo.rc(25) : fatal error RC1004: unexpected end of file found