Russian Qt Forum
Ноябрь 22, 2024, 17:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Статическая сборка 5.14 , сохранение юникода в файле  (Прочитано 7626 раз)
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« : Июнь 23, 2020, 12:16 »

Здравствуйте!
Давным-давно не пользовался Qt, и вот опять возникла необходимость... Возникло 2 вопроса общего характера.

1) Как установить/настроить Qt для создания демки, чтобы потом без проблем упаковать релиз каким-нибудь бесплатным инсталлятором и демка запустилась на других машинах? В комплекте должны быть все необходимые файлы. Подключены multimedia, sql, core и виджеты. Имеется ресурсный файл с картинками и звуками. Текущая версия Qt - 5.14.2, 64 бита, MinGW. В целях максимальной совместимости хотелось бы собрать в 32-битном виде.

2) Демка написана для тайских пользователей, в ней много текста на тайском. Интерфейс на тайском, и много тайского текста в базе данных. Интерфейс работает замечательно, но есть процедура, экспортирующая базу в файл. Она создает обычный текстовый файл, скидывает туда строчки базы, и вместо тайских символов в файле сохраняются знаки вопроса. Как сохранить переменные QString (юникод) в текстовом файле? Желательно как читабельный текст, но можно и в бинарном виде.
« Последнее редактирование: Июнь 23, 2020, 12:24 от PinkPanther » Записан

Эвтаназия - наше хобби!
tamplier
Новичок

Offline Offline

Сообщений: 40


Просмотр профиля
« Ответ #1 : Июнь 23, 2020, 13:02 »

1) Вот настройка статической сборки - https://yourdevice.net/forum/viewtopic.php?f=19&t=1943#p2931, проверял в Qt ver. 5.3 у меня работало, не знаю как будет в 5.14...
2) Не подскажу, надо интернет листать, но если погуглить, то можно много инфы на эту тему найти. Думаю в сторону этого класса надо копать - https://doc.qt.io/qt-5/qtextcodec.html
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #2 : Июнь 23, 2020, 14:19 »

1. Ничего не надо собирать, особенно статиком, "нарушая" lgpl. Качаешь (если еще нет) 32 битный бинарник- исталлятор, ставишь, компеляешь как обычно
1.1 Собираешь дистр (либы и немного плагинов) в каталог приложения и используя Inno Setup делаешь инсталлятор

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Июнь 23, 2020, 14:20 »

2) QTextStream setAutoDetectUnicode(true)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #4 : Июнь 24, 2020, 09:29 »

1. Ничего не надо собирать, особенно статиком, "нарушая" lgpl. Качаешь (если еще нет) 32 битный бинарник- исталлятор, ставишь, компеляешь как обычно
1.1 Собираешь дистр (либы и немного плагинов) в каталог приложения и используя Inno Setup делаешь инсталлятор



Да, так можно. Я так делал 3 года назад с какой-то из 5-х версий, но получится пакет размером 1.5 гиг.  Грустный А при статической компиляции (правда, на 4-ке) получился экзешник 20 мегабайт со всеми нужными либами внутри + несколько мелких файлов.
Записан

Эвтаназия - наше хобби!
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #5 : Июнь 24, 2020, 09:30 »

Всем спасибо за советы, пошел ковыряться...  Улыбающийся
Записан

Эвтаназия - наше хобби!
tamplier
Новичок

Offline Offline

Сообщений: 40


Просмотр профиля
« Ответ #6 : Июнь 24, 2020, 10:57 »


Да, так можно. Я так делал 3 года назад с какой-то из 5-х версий, но получится пакет размером 1.5 гиг.  Грустный А при статической компиляции (правда, на 4-ке) получился экзешник 20 мегабайт со всеми нужными либами внутри + несколько мелких файлов.

У меня программа скомпилированная на Qt 5.3 получилась 15 Мб (программа содержит разные виджеты, диалоговые окна, есть справка, работает с БД MSSQL и большими текстовыми файлами, и т.д.)
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #7 : Июнь 24, 2020, 12:45 »

Наверное вы добавили библиотеки только тех объектов, которые были использованы в программе. У меня так много всего, что придется долго отбирать, что использовано а что нет.
В соответствии с LGPL лицензией, я, кажется, должен буду добавить к демке не только библиотеки, но и исходники Qt. Мне бы хотелось запихнуть все в один исполняемый файл. Демка не для всеобщего обозрения, а будет высылаться по запросу, в ответ на проявленный интерес. Так что вопросы о нарушении лицензии в данном случае вряд ли уместны... Демка абсолютно бесплатна, а платной версии программы не существует и вряд ли она появится раньше, чем будет куплена коммерческая версия Qt.
Записан

Эвтаназия - наше хобби!
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #8 : Июнь 24, 2020, 14:57 »

Так что вопросы о нарушении лицензии в данном случае вряд ли уместны...
Почему? Вполне будут уместны. Они будут НЕ уместны, если вы программу используете сами, никому не показывая. А так будет вполне себе нарушение лицензии.
Мне просто интересно - зачем всем именно 1 исполняемый файл? Не проще ли сделасть инсталлятор - он заодно и избавит от вопросов "где та программа, которую я зачем то ставил на прошлой неделе?"
Записан

qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #9 : Июнь 25, 2020, 10:11 »

В соответствии с LGPL лицензией, я, кажется, должен буду добавить к демке не только библиотеки, но и исходники Qt.

1. если изменений Qt самостоятельно не проводилось, то и нечего прилагать кроме ссылки на Qt
2. выбрать из всего Qt только нужные либы - это не сложно, он даже сам сакет чего ему не хватает
Записан
tamplier
Новичок

Offline Offline

Сообщений: 40


Просмотр профиля
« Ответ #10 : Июнь 25, 2020, 12:48 »


Мне просто интересно - зачем всем именно 1 исполняемый файл? Не проще ли сделасть инсталлятор - он заодно и избавит от вопросов "где та программа, которую я зачем то ставил на прошлой неделе?"


Это риторический вопрос, у каждого свои причины, так же можно спросить, зачем кому-то нужны портабл версии ПО?
Записан
tamplier
Новичок

Offline Offline

Сообщений: 40


Просмотр профиля
« Ответ #11 : Июнь 25, 2020, 12:54 »

Наверное вы добавили библиотеки только тех объектов, которые были использованы в программе. У меня так много всего, что придется долго отбирать, что использовано а что нет.
В соответствии с LGPL лицензией, я, кажется, должен буду добавить к демке не только библиотеки, но и исходники Qt. Мне бы хотелось запихнуть все в один исполняемый файл. Демка не для всеобщего обозрения, а будет высылаться по запросу, в ответ на проявленный интерес. Так что вопросы о нарушении лицензии в данном случае вряд ли уместны... Демка абсолютно бесплатна, а платной версии программы не существует и вряд ли она появится раньше, чем будет куплена коммерческая версия Qt.

Нет не только, я ничего не менял в добавляемых модулях, потому-что боялся, что что-нибудь не будет работать, а статическая сборка создается мягко говоря не быстро... Там было немало лишнего, что по идее можно было убрать, но как я ранее объяснил не стал этого делать, для меня не критично было сколько весит экзэшник 15 Мб, или 9 Мб... Единственное добавил модуль ms-sql, так-как мне нужен был функционал работающий с ms sql server.
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #12 : Июнь 30, 2020, 19:09 »

Подсчитал объем .dll библиотек в папке компилятора bin, в сумме 110 мегабайт. Если это все, что нужно для запуска приложения на другой машине, то супер.
Записан

Эвтаназия - наше хобби!
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #13 : Июнь 30, 2020, 19:30 »

что-то многовато
Записан

ArchLinux x86_64 / Win10 64 bit
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #14 : Июнь 30, 2020, 22:41 »

открой свой экзэшник в программе dependency walker — он покажет требуемые длл
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.102 секунд. Запросов: 23.