Создание dll-библиотеки, со статически подлинко-, ванными стадартными Qt-библиотеками |
Здравствуйте, гость ( Вход | Регистрация )
Создание dll-библиотеки, со статически подлинко-, ванными стадартными Qt-библиотеками |
Гость_Гость_evg123_*_* |
7.6.2010, 19:55
Сообщение
#1
|
Гости |
Вопрос простой - как убрать зависимости в проектируемой dll- библиотеке от стандартных библиотек (не хочется их таскать с собой и отдавать конечному пользователю). Пока решение не нашёл. Сделал статическую версию Qt (4.5.2), но как только выдаю, что хочу создать dll-библиотеку, то линковщик создаёт эту библиотеку с динамической компановкой со стандартными (типа QtCore.dll). Можкт кто с этим сталкивался и знает, как обойти эту проблему. Получается, что если создаю приложение - то туда всё статически динкуется, а если - dll-блилиотеку - то статически туда ничего подлинковываться не хочет.
|
|
|
Iron Bug |
7.6.2010, 21:52
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
каким компилером собираешь?
вообще, у msvc есть флаг для этой цели - типа, линковать всё на уровне функций. вроде бы /Gy, но надо проверить, я могу неправильно помнить, а венда у меня только на работе. завтра уточню, если что. однако, не факт, что всё так просто окажется с QT. я с ней дел не имела, а у неё дофига связей торчит наружу. |
|
|
Litkevich Yuriy |
7.6.2010, 23:13
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Сделал статическую версию Qt (4.5.2), но как только выдаю, что хочу создать dll-библиотеку, то линковщик создаёт эту библиотеку с динамической компановкой со стандартными (типа QtCore.dll) это вообще звучит как фантастическая повесть. Т.к. нельзя слинковать динамически из-за отсутствия динамических библиотек Qt.Что-то делается категорически не верно. |
|
|
Гость_Гость_evg123_*_* |
8.6.2010, 19:36
Сообщение
#4
|
Гости |
|
|
|
Litkevich Yuriy |
8.6.2010, 19:42
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
evg123, расскажи подробнее, как ты делаешь библиотеку. Как выглядит pro-файл
|
|
|
Гость_Гость_evg123_*_* |
8.6.2010, 19:45
Сообщение
#6
|
Гости |
Что-то делается категорически не верно. Ничего такого сврхестественного. Борланд элементарно компилираует дээльэльки со всеми своими потрахами внутри. Нужно указать только один флаг и всё. Хочу то же и в Qt. Могу же я статически собрать приложение! Почему я не могу так же собрать часть приложения в виде дээльэльки тоже слинковав всё не с динамическими, а со статическими библиотеками, которые есть в достатке? Что касается внешних связей от Qt-шных дэдэльэлек - то они обращаются только к системным виндовым либам. и всё тут. Ничего дополнительного не надо. Ведь все программы динамически слинкованы в комплекте с qt-шными dll-библиотеками и мингвиновским довеском отдично работают везде, ничего больше не требуя |
|
|
Гость_Гость_evg123_*_* |
8.6.2010, 19:56
Сообщение
#7
|
Гости |
evg123, расскажи подробнее, как ты делаешь библиотеку. Как выглядит pro-файл На работе этот *.pro . Сегодня там не работал интернет, поэтому сейчас смог ответить только из дома. Но завтра (на крайняк вечером) - выложу. (Суть в том, что создаю TEMPLATE = lib, использую статическую библиотеку, но пишу CONFIG = dll. Далее, пишу ещё LIB = <путь>/QtCore4.a и процесс компановки проходит замечательно, но создаётся dll c динамическими связями к QtCore4.dll . Если же не писать LIB = <путь>/QtCore4.a , то тогда возникает куча неразрешённых ссылок. Так что какую-то роль всё-таки эта строка LIB = <путь>/QtCore4.a -играет) |
|
|
Iron Bug |
8.6.2010, 20:02
Сообщение
#8
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
да, я вот тоже полагаю, что любые сорцы можно компилить как угодно. и статически, и динамически. но с мингвином дел не имела, так что не знаю. это надо курить маны. а в 2008 можно попробовать /Gy, как я писала выше. по-моему, больше ничего не надо особо, если я правильно помню. ибо мне как-то тоже надо было собрать независимую ни от чего библиотеку и я долго ковыряла всякие опции компилера.
|
|
|
Litkevich Yuriy |
8.6.2010, 20:03
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Борланд элементарно компилираует дээльэльки со всеми своими потрахами внутри у Борланада свой способ у Qt свой.Для сборки статической версии приложения/dll'ки. Нужно линковать проект со статически собранной Qt. Если Qt собрана статически, то никогда не получится динамическая сборка. В этом-то и дело. Значит у тебя с проектом линкуется не та сборка Qt, раз ты получаешь не статически собранную dll'ку. |
|
|
Гость_Гость_evg123_*_* |
8.6.2010, 20:04
Сообщение
#10
|
Гости |
Дело в том, что я имел стандартный Qt, который шёл с QtCreator-ом. Там изначально всё было с динамическими библиотеками. Потом я сделал копию Qt и собрал его под мингвином с опцией configure -static ; mingw32-make. Храню эту копию у себя на случай того, чтобы делать статические приложения. и они по ходу делаются без проблем. Большие по размеру, и вполне статически слинкованные. Теперь то же хотел сделать и с Dll - но ничего подобного. Наверное те родные dll - ки, что остались после копирования Qt - мешают? Может их попробовать удалить? Но не запорчу ли я этим что-либо важное?
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 10:23 |