Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Недоступность ресурсов в App скомпилированном gcc (MinGW)  (Прочитано 10853 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
ysv_
Помогающий

ua
Offline Offline

« : 04-12-2003 12:10 » 

Исполняю следующие строки:
windres a.rc -O coff a.res
windres b.rc -O coff b.res
gcc -mwindows hello.c a.res b.res -o hello.exe -s

При выполнении hello.exe ругается на остутствие ресурсов. Запускаю ResHacker.exe. Смотрю - действительно нет  Я шокирован! т.е. ресурсы из a.res есть, а из b.res - нет. Это глюк gcc+windres или я проехал в опциях.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 04-12-2003 13:04 » 

Странно как-то... Попробуй перед b.res поставить -u символ_из_b_res - как сказано в доке: Pretend the symbol is undefined, to force linking of library modules to define it.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ysv_
Помогающий

ua
Offline Offline

« Ответ #2 : 04-12-2003 22:36 » 

Наверное меня не правильно поняли: ругается моя программа. Она пытается загрузить меню (b.res) и сообщает, что не может по причине остутствия меню в ресурсах программы. А вот диалог из a.res нормально грузится. Когда я эти два ресурса пихаю в один файл и соответсвенно получаю один res файл, то оба ресурса грузятся без проблем. Единственное неудобство надо либо все ресурсы в одном файле держать, либо перед компиляцией в один файл сливать. Пока не критично, но на будущее хочется иметь возможность полинковывать несколько файлов.

В принципе я попробовал использовать опцию -u, но как я ожидал она ничего не дает, собственно какой символ ей дать? Id ресурса что-ли? Так он числовой, а я полагаю линкер ищет имя.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 05-12-2003 10:02 » 

Нельзя ли сделать так:
cat a.rc b.rc > c.rc
windres c.rc -O coff c.res
gcc -mwindows hello.c c.res -o hello.exe -s

Я с mingw не работал и не знаю какие там есть специфичные опции в gcc. Насчет -u - я полагал что файл res имеет объектный формат.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ysv_
Помогающий

ua
Offline Offline

« Ответ #4 : 05-12-2003 13:02 » 

Цитата

Насчет -u - я полагал что файл res имеет объектный формат.

Так оно и есть.
Цитата

Нельзя ли сделать так:
cat a.rc b.rc > c.rc
windres c.rc -O coff c.res
gcc -mwindows hello.c c.res -o hello.exe -s

До этого я уже додумался:
Цитата

 Единственное неудобство надо либо все ресурсы в одном файле держать, либо перед компиляцией в один файл сливать.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 05-12-2003 13:23 » new

Экспортируемые символы в объектном файле можно просмотреть командой [q]nm -g a.res[/q] из пакета binutils (в mingw наверняка входит).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines