Кажется, MFC не может запустить мои диалоговые окна, потому что не может найти идентификаторы ресурсов. Диалоговые окна находятся в отдельном файле .lib (поэтому у него есть отдельный файл .rc, который, как я предполагаю, каким-то образом конфликтует с файлом в моем файле .exe). Как мне поступить в этой ситуации?
Ресурсы в статическом файле библиотеки — MFC
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
Да, я случайно обнаружил это сам =P Спасибо за ваш ответ! +1
- person Smashery; 05.11.2009
Убедитесь, что все ваши идентификаторы ресурсов уникальны.
person
demoncodemonkey
schedule
29.10.2009
Это требование составлено. Например, у вас может быть растровый ресурс с тем же идентификатором, что и у диалогового ресурса. Вы также можете иметь несколько дочерних элементов управления в диалоговых окнах с одинаковым идентификатором, даже в пределах одного диалогового окна (обычно для СТАТИЧЕСКИХ элементов управления). Хотя следовать вашему совету безопасно, он излишне ограничивает общее количество ресурсов, которые вы можете использовать в проекте.
- person IInspectable; 11.09.2015
Думаю, этот ответ имел для меня смысл в то время, но это было 6 лет назад. Я не могу понять, почему это повлияет на проблему ОП. Возник соблазн удалить этот ответ, но у него был один голос, который указывает на то, что он кому-то помог.....
- person demoncodemonkey; 11.09.2015