Ресурсы в статическом файле библиотеки — MFC

Кажется, MFC не может запустить мои диалоговые окна, потому что не может найти идентификаторы ресурсов. Диалоговые окна находятся в отдельном файле .lib (поэтому у него есть отдельный файл .rc, который, как я предполагаю, каким-то образом конфликтует с файлом в моем файле .exe). Как мне поступить в этой ситуации?


person Smashery    schedule 29.10.2009    source источник
comment
Можете ли вы дать более подробную информацию о том, как он не запускается? Каковы конкретные симптомы?   -  person Pavel Minaev    schedule 29.10.2009
comment
Я бы позвонил в DoModal, и ничего бы не произошло. Вхождение в функцию DoModal показало, что ресурс не удалось загрузить.   -  person Smashery    schedule 29.10.2009


Ответы (3)


В файле .rc для файла .exe добавьте такую ​​строку:

#include "YourLibResourceFile.rc"

Затем в настройках проекта .exe добавьте дополнительный каталог включения туда, где находится YourLibResourceFile.rc, в Resources/Additional Include Directorys.

person Smashery    schedule 29.10.2009

Вы не можете хранить ресурсы (содержимое файлов .rc) в статической библиотеке. И поскольку у вас может быть только один «основной» файл .rc, все остальные файлы .rc должны быть включены в этот файл с помощью оператора #include, например, как объяснил Smashery (Редактировать: О! Smashery, вы OP!).

person Serge Wautier    schedule 30.10.2009
comment
Да, я случайно обнаружил это сам =P Спасибо за ваш ответ! +1 - person Smashery; 05.11.2009

Убедитесь, что все ваши идентификаторы ресурсов уникальны.

person demoncodemonkey    schedule 29.10.2009
comment
Это требование составлено. Например, у вас может быть растровый ресурс с тем же идентификатором, что и у диалогового ресурса. Вы также можете иметь несколько дочерних элементов управления в диалоговых окнах с одинаковым идентификатором, даже в пределах одного диалогового окна (обычно для СТАТИЧЕСКИХ элементов управления). Хотя следовать вашему совету безопасно, он излишне ограничивает общее количество ресурсов, которые вы можете использовать в проекте. - person IInspectable; 11.09.2015
comment
Думаю, этот ответ имел для меня смысл в то время, но это было 6 лет назад. Я не могу понять, почему это повлияет на проблему ОП. Возник соблазн удалить этот ответ, но у него был один голос, который указывает на то, что он кому-то помог..... - person demoncodemonkey; 11.09.2015