Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [wx] Работа unicode-app под win98, libunicows и друзья 
V
    Опции темы
Static
Дата 7.8.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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 по-человечески?
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
Static
Дата 10.8.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: нет
Всего: 2



Мда, а дело было в том, что при пересборке WxWidgets новым компилятором, воспользовались инструкцией с CookBook, в которой ни слова нет о флаге MSLU :(
Вывод: пишите инструкции подробнее.
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
7am
Дата 11.8.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 ну и т.д.





PM MAIL   Вверх
korbian
Дата 11.8.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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 ©
PM   Вверх
7am
Дата 11.8.2009, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



Цитата

скорее всего при сборке wxUSE_UNICODE_MSLU установлен в 0

Что-то такое читал в wiki.wxwidgets смотрел файл и setup.h  и setup0.h не понял почему должно помочь исправление с 0 на 1 указанных опций. Ведь ключь -DwxUSE_UNICODE_MSLU=1 вроде как должен говорить препроцессору что-то типа
Код

#define wxUSE_UNICODE_MLSU 1

при компиляции wxWidgets этот ключ присутсвовал. 
Тем не менее я попробовал этот вариант и установил в setup.h и setup0.h дефолтные значения в 1. К сожалению это не помогло. По крайней мере при линковке приложения mingw не ругается на отсутсвие -lunicows. Дома у меня win98 нет. Завтра на работе попробую запусить, но думаю ничего не изменится.

Есть ещё варианты?


Это сообщение отредактировал(а) 7am - 11.8.2009, 22:25
PM MAIL   Вверх
korbian
Дата 12.8.2009, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 1
Всего: 14



Цитата(7am @  11.8.2009,  23:24 Найти цитируемый пост)
Что-то такое читал в wiki.wxwidgets смотрел файл и setup.h  и setup0.h не понял почему должно помочь исправление с 0 на 1 указанных опций

при сборке  это еще как важно. потому что без установленного флага в момент сборки код, отвечающий за использование MSLU может быть и не слинкован в саму библиотеку.

Цитата(7am @  11.8.2009,  23:24 Найти цитируемый пост)
едь ключь -DwxUSE_UNICODE_MSLU=1 вроде как должен говорить препроцессору что-то типакод C++1:#define wxUSE_UNICODE_MLSU 1highlightSyntax('cpp_xZTNlM','cpp'); 

да, должен, но при сброшенном флаге в момент сборки, установка этого флага при использовании библиотеки бесполезна.

Цитата(7am @  11.8.2009,  23:24 Найти цитируемый пост)
при компиляции wxWidgets этот ключ присутсвовал. Тем не менее я попробовал этот вариант и установил в setup.h и setup0.h дефолтные значения в 1

если при сборке библиотеки этот параметр был установлен, то ничего бы менять в  setup.h и setup0.h не пришлось бы. значит что-то тут не чисто.  smile 

как собираете библиотеку? параметры, с которыми собираете привидите!


--------------------
korbian ©
PM   Вверх
7am
Дата 12.8.2009, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
7am
Дата 12.8.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



А вот и лог сборки.
А да забыл номера версий указать

mingw 3.4.5
wxWidgets 2.8.10

Это сообщение отредактировал(а) 7am - 12.8.2009, 10:07

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  build.log 225,38 Kb
PM MAIL   Вверх
korbian
Дата 12.8.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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 ©
PM   Вверх
7am
Дата 12.8.2009, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



Цитата

странно, судя по логу wxUSE_UNICODE_MSLU таки установлен в 1

а чего странного я установил его в моём config.gcc
При запуске mingw32-make все флаги читаются из config.gcc об этом говорит строка include config.gcc в файле makefile.gcc,  а те что параметрах командной строки я указываю переопределяются, или я что-то не так понимаю?
PM MAIL   Вверх
korbian
Дата 12.8.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 1
Всего: 14



Цитата(7am @  12.8.2009,  11:17 Найти цитируемый пост)
а чего странного

7am, smile в том то и дело, что по дефолту в config.gcc MSLU сброшен в ноль.

Добавлено через 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 ©
PM   Вверх
7am
Дата 12.8.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



Цитата

в том то и дело, что по дефолту в config.gcc MSLU сброшен в ноль

Дык я же выше выкладывал свой подправленный config.gcc, а в нём MSLU я сам установил в 1.

Цитата

обсуждается проблема с MSLU, но немного другого плана

да я видел эту статью. И проблема именно та же, что и у меня. Правда повторно я её более внимательно прочитал, там написано, что надо не только -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, то линкёр ругается.

наконец-то получилосьsmile
помогла вот эта статья ну и конечно же посты 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

PM MAIL   Вверх
korbian
Дата 12.8.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 1
Всего: 14



Цитата(7am @  12.8.2009,  14:15 Найти цитируемый пост)
Дык я же выше выкладывал свой подправленный config.gcc, а в нём MSLU я сам установил в 1.

чет не обратил на присоединенный config.gcc внимание. признаю, тупанул.
Цитата(7am @  12.8.2009,  14:15 Найти цитируемый пост)
помогла вот эта статья ну и конечно же посты korbian.

не стоит благодарности, вопросы по wxWidgets здесь появляются хорошо если раз в месяц. а так QT, сплошной QT! smile  smile 



--------------------
korbian ©
PM   Вверх
7am
Дата 12.8.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.8.2009

Репутация: нет
Всего: нет



Цитата

вопросы по wxWidgets здесь появляются хорошо если раз в месяц

я прибавлю немногоsmile

Цитата

а так QT, сплошной QT

да я конечно заметил, что все на QT сидят smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.