![]() |
|
|
![]()
|
|
| Static |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 6.11.2008 Репутация: нет Всего: 2 |
Жило-было приложение, написанное на wxWidgets 2.8.9. Запускалось на многих машинах, в том числе и на тех, где установлена win98. Для работы на этих машинах к программе была прилинкована libunicows.a, в системе стояла unicows.dll - все работало.
Время шло... в программе поменяли пару формул и перекомпилировали. Но уже на gcc4.4.0, а не gcc3.4.5, как было. Теперь программа под вин98 крашится с сообщением от wxWidgets о том, что юникод в системе не поддерживается. :( Пара па с бубном ничего не дали. В чем дело? Gcc4.4.0 не может слинковать libunicows.a по-человечески? --------------------
Я не настолько безнадежен, как кажется... |
|||
|
||||
| Static |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 6.11.2008 Репутация: нет Всего: 2 |
Мда, а дело было в том, что при пересборке WxWidgets новым компилятором, воспользовались инструкцией с CookBook, в которой ни слова нет о флаге MSLU :(
Вывод: пишите инструкции подробнее. --------------------
Я не настолько безнадежен, как кажется... |
|||
|
||||
| 7am |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
Чтобы темы не плодить спрошу здесь же.
Не могу понять как использовать эту unicows, чтобы UNICODE MSLU wxWidgets приложения запускались в WIN98? Компилирую приложение wxWidgets с поддержкой UNICODE и MSLU, но при линкер не ругается на отсутствие ключа -lunicows. Т.е. libunicows не используется при сборке проекта. Компилирую так. g++ -o wxMainFrame.o -c -O3 -mthreads -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -DHAVE_W32API_H -D__WXMSW__ -D_UNICODE -DwxUSE_UNICODE_MSLU=1 -IC:\wxWidgets\lib\gcc_lib\mswu -IC:\wxWidgets\include Линкую так. Пробовал линковать и с -lunicows, но как и следовало ожидать это ничего не дало. g++ -o wxAuiTest.exe wxMainFrame.o -LC:\wxWidgets\lib\gcc_lib -lwxmsw28u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 Исходники все в UNICODE строки использую так: _("строка") В Windows-ах старше Win98 всё ок, как впрочем и для обычной unicode без поддержки mslu. В Win98 без unicows.dll пишет, что приложение unicode и не может найти unicows.dll, а когда я ему подсовываю unicows.dll пишет, что приложение unicode, но не использует unicows.dll Может я wxWidgets неправильно собрал? В libwxmsw28u.a нашёл упоминание о MSLU: __Z17wxUsingUnicowsDllv __Z17wxMSLU_DrawStateWPvS_PFivEljiiiij ну и т.д. |
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
7am, скорее всего при сборке wxUSE_UNICODE_MSLU установлен в 0. проверте во что установлен флаг wxUSE_UNICODE_MSLU в этом файле %WX_ROOT%include/wx/msw/setup.h.
Добавлено через 8 минут и 21 секунду да и вот здесь может быть чтото полезное -------------------- korbian © |
|||
|
||||
| 7am |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
Что-то такое читал в wiki.wxwidgets смотрел файл и setup.h и setup0.h не понял почему должно помочь исправление с 0 на 1 указанных опций. Ведь ключь -DwxUSE_UNICODE_MSLU=1 вроде как должен говорить препроцессору что-то типа
при компиляции wxWidgets этот ключ присутсвовал. Тем не менее я попробовал этот вариант и установил в setup.h и setup0.h дефолтные значения в 1. К сожалению это не помогло. По крайней мере при линковке приложения mingw не ругается на отсутсвие -lunicows. Дома у меня win98 нет. Завтра на работе попробую запусить, но думаю ничего не изменится. Есть ещё варианты? Это сообщение отредактировал(а) 7am - 11.8.2009, 22:25 |
||||
|
|||||
| korbian |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
при сборке это еще как важно. потому что без установленного флага в момент сборки код, отвечающий за использование MSLU может быть и не слинкован в саму библиотеку.
да, должен, но при сброшенном флаге в момент сборки, установка этого флага при использовании библиотеки бесполезна.
если при сборке библиотеки этот параметр был установлен, то ничего бы менять в setup.h и setup0.h не пришлось бы. значит что-то тут не чисто. как собираете библиотеку? параметры, с которыми собираете привидите! -------------------- korbian © |
||||||
|
|||||||
| 7am |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
собираю так
Release mingw32-make -f makefile.gcc clean mingw32-make -f makefile.gcc Debug mingw32-make -f makefile.gcc BUILD=debug clean mingw32-make -f makefile.gcc BUILD=debug При сборке библиотеки вроде флаги вижу, но полный лог не смотрел, сейчас пересоберу, чтобы результаты в файл сохранить. Присоединённый файл ( Кол-во скачиваний: 2 )
config.gcc 3,83 Kb |
|||
|
||||
| 7am |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
А вот и лог сборки.
А да забыл номера версий указать mingw 3.4.5 wxWidgets 2.8.10 Это сообщение отредактировал(а) 7am - 12.8.2009, 10:07 Присоединённый файл ( Кол-во скачиваний: 2 )
build.log 225,38 Kb |
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
7am, а нужно то, вот так:
Release mingw32-make -f makefile.gcc MSLU=1 Debug mingw32-make -f makefile.gcc BUILD=debug MSLU=1 Добавлено через 1 минуту и 13 секунд странно, судя по логу wxUSE_UNICODE_MSLU таки установлен в 1 -------------------- korbian © |
|||
|
||||
| 7am |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
а чего странного я установил его в моём config.gcc При запуске mingw32-make все флаги читаются из config.gcc об этом говорит строка include config.gcc в файле makefile.gcc, а те что параметрах командной строки я указываю переопределяются, или я что-то не так понимаю? |
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
7am, Добавлено через 10 минут и 5 секунд тут обсуждается проблема с MSLU, но немного другого плана, чуваку помогло указание unicows.lib первой в списке подключаемых библиотек. попробуй! g++ -o wxAuiTest.exe wxMainFrame.o -LC:\wxWidgets\lib\gcc_lib -lunicows -lwxmsw28u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 Добавлено через 14 минут и 37 секунд тут тоже информация по теме http://msdn.microsoft.com/en-us/library/ms812698.aspx -------------------- korbian © |
|||
|
||||
| 7am |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
Дык я же выше выкладывал свой подправленный config.gcc, а в нём MSLU я сам установил в 1.
да я видел эту статью. И проблема именно та же, что и у меня. Правда повторно я её более внимательно прочитал, там написано, что надо не только -lunicows ставить впереди всех, но и бибилиотеки wx ставить позади виндовых. К сожалению именно это у меня не получается, сразу ошибки выдаются. Максимум, что у меня получилось это задвинуть главную библиотеку за несколько виндовых вот так -lunicows -lkernel32 -luser32 -ladvapi32 -lshell32 -lrpcrt4 -lwsock32 -lwinspool -lwinmm -lwxmsw28u -lcomctl32 -luuid -lole32 -loleaut32 -lgdi32 -lcomdlg32 -lwxregexu -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxexpat т.е. если я ставлю перед -lwxmsw28 любую из -luuid -lole32 -loleaut32 -lgdi32 -lcomdlg32, то линкёр ругается. наконец-то получилось помогла вот эта статья ну и конечно же посты korbian. смысл такой: первой должна стоять -lwxmsw28 затем -lunicows затем виндовые библиотеки затем остальные Вот рабочая версия -lwxmsw28u -lunicows -lkernel32 -luser32 -ladvapi32 -lshell32 -lrpcrt4 -lwsock32 -lwinspool -lwinmm -lcomctl32 -luuid -lole32 -loleaut32 -lgdi32 -lcomdlg32 -lwxregexu -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxexpat |
||||
|
|||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
чет не обратил на присоединенный config.gcc внимание. признаю, тупанул. не стоит благодарности, вопросы по wxWidgets здесь появляются хорошо если раз в месяц. а так QT, сплошной QT! -------------------- korbian © |
|||
|
||||
| 7am |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
я прибавлю немного
да я конечно заметил, что все на QT сидят |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |