Russian Qt Forum
Ноябрь 01, 2024, 15:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
"Static" .dll
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: "Static" .dll (Прочитано 6341 раз)
cuzace
Гость
"Static" .dll
«
:
Декабрь 25, 2014, 02:04 »
Здравствуйте.
Насколько я понял, существуют 2 очевидных варианта сборки:
1. Полностью динамическая, требующая распространения вместе с приложением множество Qt, mingw и, что самое неприятное, огромных icu дллок. Их много, они много весят и выглядит все это не слишком приятно. Ко всему прочему, такой метод вызывает дополнительные проблемы, судя по
http://habrahabr.ru/post/188816/
2. Полностью статическая, которая нормально работает, но требует полной перекомпиляции.
Отсюда вопрос - возможно ли комбинировать оба варианта? А именно - получить статическую .exe и "статическую" (оксюморон, конечно) .dll, которая не будет требовать дополнительные либы.
Сделать это обычными методами не получилось, статические .exe работают нормально и везде, как и нужно, а вот .dll в обычном виде требуют библиотеки от используемых в них классов, а собственно "статические длл" получить не удается, вместо них собираются lib*.a.
«
Последнее редактирование: Декабрь 25, 2014, 10:06 от cuzace
»
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: "Static" .dll
«
Ответ #1 :
Декабрь 25, 2014, 08:15 »
На неделе обсуждалось, поищи. ИМХО, статика нафиг не нужна.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bepec
Гость
Re: "Static" .dll
«
Ответ #2 :
Декабрь 25, 2014, 08:28 »
У вас неправильные предпосылки. Вы рассматриваете статью Qt 5.1, она тогда была ещё совсем сырая. В текущих версиях проблем не будет, ну а что dll таскать надо - так никакой проблемы нет.
Записан
cuzace
Гость
Re: "Static" .dll
«
Ответ #3 :
Декабрь 25, 2014, 10:06 »
Если такая проблема существует в сырой версии, то вполне возможно, что она когда-то (в самый неудобный момент) появится вновь, в то время, как в статическом варианте ее в принципе не должно быть - собрал и забыл.
Сама по себе статика вполне нужна, по крайней мере чисто психологически - не очень приятно следить за "левыми" либами, при том, что их много, они странно называются и очень много весят, особенно icu (не нужная мне на первый взгляд библиотека, весящая больше самого приложения - явно не ок). Удобнее было бы заниматься с аккуратным .exe, в котором находится все, что обновлять не планируется, и собственными дллками, в которые вынесены части, требующие частой перекомпиляции. По крайней мере больший контроль, выбор и возможности - лучше, чем их отсутствие.
Да и в принципе интересна возможность осуществления подобного, если в .exe можно поместить все, что ему нужно, то почему так нельзя сделать с .dll?
Если нет, то я где-то слышал о возможности избавиться хотя бы от icu (тут, вроде бы, отключение вебкита) и mingw библиотек - это возможно?
«
Последнее редактирование: Декабрь 25, 2014, 10:08 от cuzace
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: "Static" .dll
«
Ответ #4 :
Декабрь 25, 2014, 10:20 »
Цитата: cuzace от Декабрь 25, 2014, 10:06
Да и в принципе интересна возможность осуществления подобного, если в .exe можно поместить все, что ему нужно, то почему так нельзя сделать с .dll?
Возможно, но потребуется основательно поработать с проектом, готовых таких сборок я не знаю. И повторять эту процедуру при каждом обновлении. Оно Вам надо?
Вас волнует что "много файлов в папке/мамке приложения" выглядит неопрятно? Ну во-первых это стандартная практика на Вындоуз. Во-вторых можно сложить все dll напр в ту же в папку "platfоrms" и использовать "delay loaded DLL" - работает для всех Qt dll. Но OSX есть еще лучшее стандартное решение. На Linux - проконсультируйтесь с тамошним экспертом.
Эта тема уже набила оскомину, понятно почему сначала хочется статику, но рано или поздно перейдете на динамику (как подавляющее большинство)
Записан
Bepec
Гость
Re: "Static" .dll
«
Ответ #5 :
Декабрь 25, 2014, 10:40 »
Цитата: cuzace от Декабрь 25, 2014, 10:06
Если такая проблема существует в сырой версии, то вполне возможно, что она когда-то (в самый неудобный момент) появится вновь, в то время, как в статическом варианте ее в принципе не должно быть - собрал и забыл.
С таким же успехом у нас на земле могут появиться динозавры. Шанс есть, но он пренебрежительно малый и проблема выдумана.
Цитата: cuzace от Декабрь 25, 2014, 10:06
Сама по себе статика вполне нужна, по крайней мере чисто психологически - не очень приятно следить за "левыми" либами, при том, что их много, они странно называются и очень много весят, особенно icu (не нужная мне на первый взгляд библиотека, весящая больше самого приложения - явно не ок). Удобнее было бы заниматься с аккуратным .exe, в котором находится все, что обновлять не планируется, и собственными дллками, в которые вынесены части, требующие частой перекомпиляции. По крайней мере больший контроль, выбор и возможности - лучше, чем их отсутствие.
Очередная выдуманная проблема. Положите все dll в папку Windows и будет у вас всё хорошо. И работать вы будете только с exe приложения. Проблема в том, что вы судите по программам, дллки которых лежат как раз там
Цитата: cuzace от Декабрь 25, 2014, 10:06
Да и в принципе интересна возможность осуществления подобного, если в .exe можно поместить все, что ему нужно, то почему так нельзя сделать с .dll?
Если нет, то я где-то слышал о возможности избавиться хотя бы от icu (тут, вроде бы, отключение вебкита) и mingw библиотек - это возможно?
Можно это сделать. Можно собрать свою версию Qt, отвязаться от зависимостей, переписать всё на чистый C++ без заимствованных проприетарных решений. Вот только по затратам это дорого и глупо. Зачем переписывать то, что хорошо работает?
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: "Static" .dll
«
Ответ #6 :
Декабрь 25, 2014, 11:15 »
Сделайте свой инсталлятор в котором будут все нужные либы + ваше ПО и забейте на сомнения. Это не делфи, где все в один экзешник льется (хм по сути статика).
Записан
cuzace
Гость
Re: "Static" .dll
«
Ответ #7 :
Декабрь 25, 2014, 11:41 »
Если в новых версиях проблем нет и не должно быть, надо попробовать.
Хотя все-таки кажется корректным хранить то, что не подразумевает изменения в самом .exe, причем не только библиотеки, но и любые другие файлы. Имо, такая схема была бы удобной - имеем редкообновляемый .exe определенной версии и .dll совместимые именно с этой версией .exe. Вполне изящно и никаких проблем с зависимостями. Хотя, получается что это само по себе является проблемой.
Цитировать
Возможно, но потребуется основательно поработать с проектом, готовых таких сборок я не знаю. И повторять эту процедуру при каждом обновлении. Оно Вам надо?
А есть статьи/примеры, как это сделать?
Цитировать
Можно это сделать. Можно собрать свою версию Qt, отвязаться от зависимостей, переписать всё на чистый C++ без заимствованных проприетарных решений. Вот только по затратам это дорого и глупо. Зачем переписывать то, что хорошо работает?
Про mingw (не Qt) библиотеки слышал, что это именно "просто".
Записан
Bepec
Гость
Re: "Static" .dll
«
Ответ #8 :
Декабрь 25, 2014, 12:05 »
Qt вам даёт простой и работающий проект. Даже не знающий с++ может написать программку на Qt. Конечно это будет шлак в глазах профессионалова, но всё же.
Вы ищете какое то "простое" решение, а на самом деле отрицаете простоту динамических библиотек
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: "Static" .dll
«
Ответ #9 :
Декабрь 25, 2014, 12:11 »
Цитата: cuzace от Декабрь 25, 2014, 02:04
Отсюда вопрос - возможно ли комбинировать оба варианта? А именно - получить статическую .exe и "статическую" (оксюморон, конечно) .dll, которая не будет требовать дополнительные либы.
По определению невозможно.
Т.е. слепить имея большой секс скорее-всего получится, но работать не будет.
«
Последнее редактирование: Декабрь 25, 2014, 12:14 от GreatSnake
»
Записан
Qt 5.11/4.8.7 (X11/Win)
torwig
Самовар
Offline
Сообщений: 134
Re: "Static" .dll
«
Ответ #10 :
Декабрь 26, 2014, 11:02 »
С инсталлятором вам все верно советуют. Исполняемый файл, библиотеки .dll туда, файлы конфигов и пр туда засовываете. Он все копирует куда надо, создает ярлык на рабочем столе, строчку в меню Пуск и т.д. Пользователь не видит ваших .dll. Потом вам еще захочется обновлять свое приложение..
п.с. В Хроме, например, в папке Google есть chrome.exe, рядом с ним папка с конкретной версией, и там уже chrome.dll (и многие другие нужные для работы файлы), откуда собственно все и начинается.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: "Static" .dll
«
Ответ #11 :
Декабрь 26, 2014, 11:13 »
Цитата: GreatSnake от Декабрь 25, 2014, 12:11
По определению невозможно.
Т.е. слепить имея большой секс скорее-всего получится, но работать не будет.
Не вижу почему, что (принципиально) мешает иметь 1 dll вместо серии мелких? Др дело это неразумно/непрактично - то да
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...