Я только что прошел через компилятор MS Visual Studio. Мы преобразовывали некоторые устаревшие проекты из DLL в статические библиотеки. В некоторых из этих DLL были встроены диалоговые или строковые ресурсы. Мне удалось скомпилировать сценарии .RC для этих библиотек DLL в наше основное приложение, включив их в RC-файл сценария основного приложения через механизм «TEXTINCLUDE». Мне было проще всего это сделать, отредактировав RC-файл напрямую, но Visual Studio также предоставляет немного более «магический» механизм. Реализация, скорее всего, отличается в других компиляторах.
Для непосредственного управления основным сценарием RC:
0,1. В разделе «2 TEXTINCLUDE» включите файл заголовка, который определяет идентификаторы ресурсов для вашей библиотеки. Синтаксис
2 TEXTINCLUDE
BEGIN
"#include ""my_first_lib_header.h""\r\n"
"#include ""my_second_lib_header.h""\0"
END
0,2. В разделе «3 TEXTINCLUDE» включите RC-скрипт из вашей библиотеки.
3 TEXTINCLUDE
BEGIN
"#include ""my_first_library.rc""\r\n"
"#include ""my_second_library.rc""\0"
END
Шаги 3 и 4 должны выполняться автоматически, но я обнаружил, что было бы надежнее просто ввести их самостоятельно, а не зависеть от компилятора сценариев ресурсов Microsoft, который позаботился бы о вещах.
0,3. Добавьте заголовочный файл с определенным ресурсом библиотеки в список символов только для чтения. Этот список обычно находится в верхней части файла.
#define APSTUDIO_READONLY_SYMBOLS
#include "my_first_lib_header.h"
#include "my_second_lib_header.h"
#undef APSTUDIO_READONLY_SYMBOLS
0,4. Включите RC-скрипт вашей библиотеки в раздел APSTUDIO_INVOKED. Обычно это внизу файла.
#ifndef APSTUDIO_INVOKED
#include "my_first_library.rc"
#include "my_second_library.rc"
#endif
Вы также можете делать все это автоматически через IDE Visual Studio, но я обнаружил, что это не всегда применимо, когда я ожидал.
- Откройте окно «Просмотр ресурсов» в Visual Studio.
- Щелкните правой кнопкой мыши файл ресурсов вашего основного приложения и выберите «Ресурс включает ...» в контекстном меню.
- В поле «Директивы символов только для чтения» добавьте операторы включения для файлов .h, которые определяют идентификаторы ресурсов для ваших библиотек.
- В поле «Директивы времени компиляции» добавьте операторы include для скрипта .rc вашей библиотеки.
- Нажмите хорошо. Вы также можете вручную запустить компиляцию сценария RC, чтобы убедиться, что это произойдет.
Если скрипт ресурсов вашей библиотеки ссылается на какие-либо файлы на диске (текстовые файлы, файлы значков и т. Д.), Вам необходимо убедиться, что основной проект приложения знает, где их найти. Вы можете скопировать эти файлы туда, где их может найти ваше приложение, или добавить дополнительный путь включения в настройках компилятора.
Чтобы добавить дополнительный путь включения:
- Откройте диалоговое окно свойств вашего основного приложения.
- Выберите «Свойства конфигурации / Ресурсы / Общие» в левой навигационной панели.
- В списке свойств введите любые подходящие пути рядом с «Дополнительные каталоги включения».