Здравствуйте, гость ( Вход | Регистрация )
rellanium | Дата 17.1.2012, 13:40 |
Решение
|
|
evg123 | Дата 21.6.2010, 19:15 |
Пока что вопрос с подлинковкой стандартной динамической библиотеки статическим путём совою собственную динамическую не разрешился. Если кто может что на эту тему подсказать - буду признателен. Задал этот вопрос на Qtcentre.rog -- пока тоже самое -- ответов нет. Неужели это такая редкая и нетривиальная задача? http://www.qtcentre.org/threads/31844-Stat...-of-the-library |
|
evg123 | Дата 17.6.2010, 9:32 |
с этого места[/url], например... Благодарю. Интересная инфа. |
|
Litkevich Yuriy | Дата 15.6.2010, 13:40 |
интерфейс через статическую библиотеку к динамической) не через статическую, a-файл при динамической сборке весит с гулькин нос, т.е. он вовсе не является статической библиотекой.Было тут на форуме про это, надо искать. можете дать ссылочку чтобы почитать об этом деле - у меня тут пробел. с этого места, например. |
|
evg123 | Дата 15.6.2010, 11:27 |
libQtCore4.a - это как раз статический вариант динамической библиотеки (а не интерфейс). это именно интерфейс.Когда Qt собирается статически, в имени библиотеки отсутствует мажорный номер версии (цифра 4). П.С. ошибки уже больше походят на правду. П.П.С. всё таки dll'ка должна собираться и при статически собранной Qt, хотя я сам так и не делал, но по интернету было подтверждение. Пока что не получилось. Я что-то тоже встречал, что можно, но вроде как в старых версиях. По поводу линковки (интерфейс через статическую библиотеку к динамической) - можете дать ссылочку чтобы почитать об этом деле - у меня тут пробел. |
|
Litkevich Yuriy | Дата 11.6.2010, 16:40 |
libQtCore4.a - это как раз статический вариант динамической библиотеки (а не интерфейс). это именно интерфейс.Когда Qt собирается статически, в имени библиотеки отсутствует мажорный номер версии (цифра 4). П.С. ошибки уже больше походят на правду. П.П.С. всё таки dll'ка должна собираться и при статически собранной Qt, хотя я сам так и не делал, но по интернету было подтверждение. |
|
evg123 | Дата 11.6.2010, 9:25 |
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? Или я чего-то не догоняю? |
|
Litkevich Yuriy | Дата 10.6.2010, 9:27 |
LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a ни как не пойму, зачем ты это пишешь?Во первых этого файла никогда нет при статической сборке Qt! Этот файл - интерфейс к динамической версии QtCore4.dll |
|
evg123 | Дата 10.6.2010, 9:21 |
evg123, важную деталь упускаешь. TEMPLATE = lib нужно писать до зависимой фразы (т.е. до CONFIG += staticlib) Поменял, как вы говорите строчки местами: QT -= gui TARGET = comport TEMPLATE = lib CONFIG += dll release DEFINES += COMPORT_LIBRARY SOURCES += comport.cpp \ ..................... HEADERS += comport.h \ qextserialport/qextserialport.h ..................... LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a не помогло. всё также не разрешена ссылка `WinMain@16' |
|
Litkevich Yuriy | Дата 10.6.2010, 9:01 |
evg123, важную деталь упускаешь. TEMPLATE = lib нужно писать до зависимой фразы (т.е. до CONFIG += staticlib) | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 12.5.2024, 2:06 |