crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Создание dll-библиотеки, со статически подлинко-, ванными стадартными Qt-библиотеками
Гость_Гость_evg123_*_*
сообщение 7.6.2010, 19:55
Сообщение #1





Гости








    


Вопрос простой - как убрать зависимости в проектируемой dll- библиотеке от стандартных библиотек (не хочется их таскать с собой и отдавать конечному пользователю). Пока решение не нашёл. Сделал статическую версию Qt (4.5.2), но как только выдаю, что хочу создать dll-библиотеку, то линковщик создаёт эту библиотеку с динамической компановкой со стандартными (типа QtCore.dll). Можкт кто с этим сталкивался и знает, как обойти эту проблему. Получается, что если создаю приложение - то туда всё статически динкуется, а если - dll-блилиотеку - то статически туда ничего подлинковываться не хочет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 10.6.2010, 9:27
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(evg123 @ 10.6.2010, 13:21) *
LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a
ни как не пойму, зачем ты это пишешь?
Во первых этого файла никогда нет при статической сборке Qt!
Этот файл - интерфейс к динамической версии QtCore4.dll
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
evg123
  опции профиля:
сообщение 11.6.2010, 9:25
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 29.4.2009
Из: Минск
Пользователь №: 714

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 10.6.2010, 9:27) *
Цитата(evg123 @ 10.6.2010, 13:21) *
LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a
ни как не пойму, зачем ты это пишешь?
Во первых этого файла никогда нет при статической сборке Qt!
Этот файл - интерфейс к динамической версии QtCore4.dll


1: закоментировал LIB, собрал статическую библиотеку (все другие установки - как и прежде)

QT -= gui
TARGET = comport
TEMPLATE = lib
CONFIG += staticlib release
DEFINES += COMPORT_LIBRARY
SOURCES += comport.cpp \
........................................
HEADERS += comport.h \
........................................
#LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a


статическая библиотека собралась:

ar -ru release\libcomport.a release/comport.o release/qextserialport.o release/qextserialbase.o release/win_qextserialport.o release/GlobalVars.o release/moc_qextserialport.o release/moc_qextserialbase.o release/moc_win_qextserialport.o
mingw32-make[1]: Leaving directory `D:/WORKDIR/qt-creator-projects/comportdll-static'
mingw32-make: Leaving directory `D:/WORKDIR/qt-creator-projects/comportdll-static'
ar: creating release\libcomport.a

Теперь собираю динамически:

QT -= gui
TARGET = comport
TEMPLATE = lib
CONFIG += dll release
DEFINES += COMPORT_LIBRARY
SOURCES += comport.cpp \
...........................................
HEADERS += comport.h \
...........................................
#LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a


Имею:
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -static -mthreads -Wl -Wl,--out-implib,release\libcomport.a -o release\comport.dll release/comport.o release/qextserialport.o release/qextserialbase.o release/win_qextserialport.o release/GlobalVars.o release/moc_qextserialport.o release/moc_qextserialbase.o release/moc_win_qextserialport.o -L"d:\Qt\2009.03\qt_static\lib" -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
release/qextserialbase.o:qextserialbase.cpp:(.text+0xe): undefined reference to `_imp___ZN7QStringaSERKS_'
release/qextserialbase.o:qextserialbase.cpp:(.text+0x75): undefined reference to `_imp___ZN6QMutexD1Ev'
release/qextserialbase.o:qextserialbase.cpp:(.text+0xb6): undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
release/qextserialbase.o:qextserialbase.cpp:(.text+0xc8): undefined reference to `_imp___ZN9QIODeviceD2Ev'..............................................
...........................................
и ещё море таких ошибок.

У меня такое впечатление, что qt в статическом варианте позволяет собрать только статическую библиотеку (предназначенную для стптической линковки).
либо динамическую библиотеку со всеми еразрешёнными связями на стандартные библиотеки.

По ходу была мысль: может слинковать dll вручную: запустить g++.exe со всеми требуемыми параметрами?

И ещё вопрос: я считал что libQtCore4.a - это как раз статический вариант динамической библиотеки (а не интерфейс).
Где же именно статическая реализация QtCore4? Или я чего-то не догоняю?








Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Гость_evg123_*   Создание dll-библиотеки, со статически подлинко-   7.6.2010, 19:55
- - Iron Bug   каким компилером собираешь? вообще, у msvc есть ф...   7.6.2010, 21:52
|- - Гость_evg123_*   Цитата(Iron Bug @ 7.6.2010, 21:52) каким ...   8.6.2010, 19:36
- - Litkevich Yuriy   Цитата(Гость_Гость_evg123_*_* @ 7.6.2010, 23...   7.6.2010, 23:13
|- - Гость_evg123_*   Цитата(Litkevich Yuriy @ 7.6.2010, 23:13)...   8.6.2010, 19:45
- - Litkevich Yuriy   evg123, расскажи подробнее, как ты делаешь библиот...   8.6.2010, 19:42
|- - Гость_evg123_*   Цитата(Litkevich Yuriy @ 8.6.2010, 19:42)...   8.6.2010, 19:56
|- - Гость_evg123_*   Дело в том, что я имел стандартный Qt, который шёл...   8.6.2010, 20:04
- - Iron Bug   да, я вот тоже полагаю, что любые сорцы можно комп...   8.6.2010, 20:02
- - Litkevich Yuriy   Цитата(Гость_Гость_evg123_*_* @ 8.6.2010, 23...   8.6.2010, 20:03
|- - Гость_evg123_*   Цитата(Litkevich Yuriy @ 8.6.2010, 20:03)...   8.6.2010, 20:09
|- - Гость_evg123_*   Короче, я поэксперементирую и скажу, что получилос...   8.6.2010, 20:11
- - Litkevich Yuriy   Цитата(Гость_Гость_evg123_*_* @ 8.6.2010, 23...   8.6.2010, 20:08
- - Litkevich Yuriy   Цитата(Гость_Гость_evg123_*_* @ 9.6.2010, 0...   8.6.2010, 20:12
|- - evg123   Цитата(Litkevich Yuriy @ 8.6.2010, 20:12)...   9.6.2010, 11:29
|- - evg123   Залез в makespec: D:\Qt\2009.03\qt_...   9.6.2010, 12:15
- - Litkevich Yuriy   evg123, важную деталь упускаешь. TEMPLATE = lib ну...   10.6.2010, 9:01
|- - evg123   Цитата(Litkevich Yuriy @ 10.6.2010, 9:01)...   10.6.2010, 9:21
- - Litkevich Yuriy   Цитата(evg123 @ 10.6.2010, 13:21) LIBS +=...   10.6.2010, 9:27
|- - evg123   Цитата(Litkevich Yuriy @ 10.6.2010, 9:27)...   11.6.2010, 9:25
- - Litkevich Yuriy   Цитата(evg123 @ 11.6.2010, 13:25) libQtCo...   11.6.2010, 16:40
|- - evg123   Цитата(Litkevich Yuriy @ 11.6.2010, 17:40...   15.6.2010, 11:27
- - Litkevich Yuriy   Цитата(evg123 @ 15.6.2010, 15:27) интерфе...   15.6.2010, 13:40
|- - evg123   Цитата(Litkevich Yuriy @ 15.6.2010, 14:40...   17.6.2010, 9:32
|- - evg123   Пока что вопрос с подлинковкой стандартной динамич...   21.6.2010, 19:15
- - rellanium   Решение TEMPLATE = lib #VERSION = 0.1.0 CONFIG...   17.1.2012, 13:40


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 22:52