Здравствуйте, гость ( Вход | Регистрация )
| Гость_Гость_evg123_*_* |
7.6.2010, 19:55
Сообщение
#1
|
|
Гости |
Вопрос простой - как убрать зависимости в проектируемой dll- библиотеке от стандартных библиотек (не хочется их таскать с собой и отдавать конечному пользователю). Пока решение не нашёл. Сделал статическую версию Qt (4.5.2), но как только выдаю, что хочу создать dll-библиотеку, то линковщик создаёт эту библиотеку с динамической компановкой со стандартными (типа QtCore.dll). Можкт кто с этим сталкивался и знает, как обойти эту проблему. Получается, что если создаю приложение - то туда всё статически динкуется, а если - dll-блилиотеку - то статически туда ничего подлинковываться не хочет.
|
|
|
|
![]() |
|
Litkevich Yuriy |
8.6.2010, 20:12
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Гость_Гость_evg123_*_* @ 9.6.2010, 0:09) Link Если я собираю статическую либу (т.е. указываю TEMPLATE = lib и не указываю CONFIG = dll) проект статической библиотеки требует:TEMPLATE = lib CONFIG = staticlib А обычной TEMPLATE = lib CONFIG = dll |
|
|
|
|
evg123 |
9.6.2010, 11:29
Сообщение
#3
|
|
Студент ![]() Группа: Участник Сообщений: 24 Регистрация: 29.4.2009 Из: Минск Пользователь №: 714 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy @ 8.6.2010, 20:12) Link Цитата(Гость_Гость_evg123_*_* @ 9.6.2010, 0:09) Link Если я собираю статическую либу (т.е. указываю TEMPLATE = lib и не указываю CONFIG = dll) проект статической библиотеки требует:TEMPLATE = lib CONFIG = staticlib А обычной TEMPLATE = lib CONFIG = dll результаты эксперементов показали следующее: 1.1. Компилировал в мингвине, Qt-Creator-е Заранее была сделана копия QT (4.5.2) и собрана статически (qt_static) 1.2. Собирал библиотеку со следующей конфигурацией: # ------------------------------------------------- # Project created by QtCreator 2010-06-03T09:36:13 # ------------------------------------------------- CONFIG += qt staticlib release QT -= gui TARGET = comport TEMPLATE = lib DEFINES += COMPORT_LIBRARY SOURCES += comport.cpp \ qextserialport/qextserialport.cpp \ qextserialport/qextserialbase.cpp \ qextserialport/win_qextserialport.cpp \ GlobalVars.cpp HEADERS += comport.h \ qextserialport/qextserialport.h \ qextserialport/qextserialbase.h \ qextserialport/win_qextserialport.h \ GlobalVars.h \ Global.h \ ThrdSoftTerm.h LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a win32 { QMAKE_LFLAGS += -static-libgcc } 1.3. В параметрах запуска использовал: PATH = D:\Qt\2009.03\mingw\bin;D:\Qt\2009.03\qt_static\bin;D:\Program\Microchip\MPLAB C30\bin;D:\Xilinx\11.1\ChipScope\bin\nt64;D:\Xilinx\11.1\common\bin\nt64;D:\Xilinx\11.1\common\lib\nt64;D:\Xilinx\11.1\PlanAhead\bin;D:\Xilinx\11.1\ISE\bin\nt64;D:\Xilinx\11.1\ISE\lib\nt64;D:\Program\Microchip\MCC18\mpasm;D:\Program\Microchip\MCC18\bin;D:\Program\Delphi\Nesterov\Microchip\MCC18\mpasm;D:\Program\Delphi\Nesterov\Microchip\MCC18\bin;D:\Program\Delphi\Nesterov\Microchip\MPLAB IDE\MCC18\mpasm;D:\Program\Delphi\Nesterov\Microchip\MPLAB IDE\MCC18\bin;D:\EDK\bin\nt;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\;C:\Program Files (x86)\Borland\BDS\4.0\Bin;C:\Program Files\SolidWorks\COSMOS M;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files (x86)\P-CAD 2006 Viewer\;C:\Program Files (x86)\Borland\CaliberRM SDK 2005 R2\lib;C:\Program Files (x86)\Common Files\Autodesk Shared\;%QUARTUS_ROOTDIR%\bin;D:\Program Files\System;D:\Program Files\Altium Designer Winter 09\System;D:\Program\Delphi\Nesterov\Microchip\bin;C:\Program Files (x86)\Microchip\MPLAB C30\bin;D:\Program\Microchip\MPLAB IDE\VDI;D:\Program\Microchip\MPLAB C30\bin;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\;D:\Microchip Starter Kits\PIC32 Starter Kits\MPLAB C32 Suite\bin;D:\Microchip Starter Kits\PIC32 Starter Kits\MPLAB IDE\VDI;D:\Program\Microchip\MCC18\mpasm;D:\Program\Microchip\MCC18\bin;D:\Program\Delphi\Nesterov\Microchip\MCC18\mpasm;D:\Program\Delphi\Nesterov\Microchip\MCC18\bin;D:\Program\Delphi\Nesterov\Microchip\MPLAB IDE\MCC18\mpasm;D:\Program\Delphi\Nesterov\Microchip\MPLAB IDE\MCC18\bin;c:\program files (x86)\borland\bds\4.0\MyLIB\_BPL;D:\Modeltech_xe\win32xoem;D:\Modeltech_xe_starter\win32xoem Здесь важно, что путь указан на статическую библиотеку. 1.4. Из D:\Qt\2009.03\qt_static\bin жестоко физически удалил все Qt4.dll - либы 1.5. Результат сборки: собралась библиотека libcomport.a размером 84 466 байт. Не могу сразу сказать понадобится или нет D:/Qt/2009.03/qt_static/lib/libQtCore4.a для сборки окончательного приложения. 2. Создаю динамическую библиотеку со статически скомпилированной qt: 2.1 файл конфигураций: CONFIG += qt dll release QT -= gui TARGET = comport TEMPLATE = lib DEFINES += COMPORT_LIBRARY SOURCES += comport.cpp \ qextserialport/qextserialport.cpp \ qextserialport/qextserialbase.cpp \ qextserialport/win_qextserialport.cpp \ GlobalVars.cpp HEADERS += comport.h \ qextserialport/qextserialport.h \ qextserialport/qextserialbase.h \ qextserialport/win_qextserialport.h \ GlobalVars.h \ Global.h \ ThrdSoftTerm.h LIBS += D:/Qt/2009.03/qt_static/lib/libQtCore4.a win32 { QMAKE_LFLAGS += -static-libgcc } 2.2 параметр PATH, как и прежде 2.3 результат : получил: comport.dll (размером 59 904 с ссылками на QtCore4.dll) получил: libcomport.a (размером 99 116 в отличие от 84 466 в предыдущем случае) 3. Если с такими же параметрами компилирую приложение - то оно получается чисто статическое с сылкой только на mingw10.dll (ну и на микрософтовские либы) Вопрос - может что-то не то с makespec - сейчас посмотрю |
|
|
|
Гость_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
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![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 11.12.2025, 3:09 |