Russian Qt Forum
Сентябрь 25, 2024, 06:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема линковки статической библиотеки в мингв и студии  (Прочитано 8262 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Апрель 26, 2008, 11:41 »

Добрый день!
У меня вопрос по поводу сборки статической библиотеки и последующей линковки ее с приложением.
В данном проекте (приаттачен) при попытке линковки компиляторами студии и мингв появляются непонятные ошибки,
когда в config.pri указан LIB_CONFIG=staticlib.
При сборке динамической библиотеки, все работает.
При статике, мингв отказывается  импортировать символы из библиотеки, а студия просто вываливается с сообщением "команда не найдена".
Причем проблема проявляется только в винде. Под сузей 10.3 все ок.

Вот такой вывод получаю в мингв:

Код:
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
-DIISTASKPANEL_SHARED -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT
_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Qt\4.3.4.mingw\include\QtCore" -I"c:\Qt\4
.3.4.mingw\include\QtCore" -I"c:\Qt\4.3.4.mingw\include\QtGui" -I"c:\Qt\4.3.4.mi
ngw\include\QtGui" -I"c:\Qt\4.3.4.mingw\include\QtXml" -I"c:\Qt\4.3.4.mingw\incl
ude\QtXml" -I"c:\Qt\4.3.4.mingw\include" -I"..\..\include" -I"c:\Qt\4.3.4.mingw\
include\ActiveQt" -I"release" -I"release" -I"c:\Qt\4.3.4.mingw\mkspecs\win32-g++
" -o release\qrc_test.o release\qrc_test.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release\test.exe release/test.
o release/main.o release/moc_test.o release/qrc_test.o  -L"..\..\lib" -L"c:\Qt\4
.3.4.mingw\lib" -lmingw32 -lqtmain -liistaskpanel -lQtXml4 -lQtGui4 -lQtCore4
release/test.o(.text+0x16d):test.cpp: undefined reference to `_imp___ZN10iisTask
BoxC1ERK7QPixmapRK7QStringbP7QWidget'
release/test.o(.text+0x217):test.cpp: undefined reference to `_imp___ZN12iisTask
Panel9addWidgetEP7QWidget'
release/test.o(.text+0x2ed):test.cpp: undefined reference to `_imp___ZN12iisIcon
LabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x3af):test.cpp: undefined reference to `_imp___ZN10iisTask
Box12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x4bd):test.cpp: undefined reference to `_imp___ZN12iisIcon
LabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x581):test.cpp: undefined reference to `_imp___ZN10iisTask
Box12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x5cc):test.cpp: undefined reference to `_imp___ZN10iisTask
Box11groupLayoutEv'
release/test.o(.text+0x6c1):test.cpp: undefined reference to `_imp___ZN12iisIcon
LabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x782):test.cpp: undefined reference to `_imp___ZN10iisTask
Box12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x88e):test.cpp: undefined reference to `_imp___ZN12iisIcon
LabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x94f):test.cpp: undefined reference to `_imp___ZN10iisTask
Box12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x9fa):test.cpp: undefined reference to `_imp___ZN12iisIcon
Label9setColorsERK6QColorS2_S2_'
release/test.o(.text+0xa23):test.cpp: undefined reference to `_imp___ZN12iisIcon
Label11setFocusPenERK4QPen'
release/test.o(.text+0xb1d):test.cpp: undefined reference to `_imp___ZN12iisIcon
LabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0xbe1):test.cpp: undefined reference to `_imp___ZN10iisTask
Box12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0xca5):test.cpp: undefined reference to `_imp___ZN10iisTask
BoxC1ERK7QPixmapRK7QStringbP7QWidget'
release/test.o(.text+0xd4f):test.cpp: undefined reference to `_imp___ZN12iisTask
Panel9addWidgetEP7QWidget'
release/test.o(.text+0xe25):test.cpp: undefined reference to `_imp___ZN12iisIcon
LabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0xeed):test.cpp: undefined reference to `_imp___ZN10iisTask
Box12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0xfc4):test.cpp: undefined reference to `_imp___ZN12iisIcon
LabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x1085):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x1177):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x123b):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x12be):test.cpp: undefined reference to `_imp___ZN10iisTas
kBoxC1ERK7QPixmapRK7QStringbP7QWidget'
release/test.o(.text+0x1333):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x13cb):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x145a):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x14ee):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x1581):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x1612):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox11groupLayoutEv'
release/test.o(.text+0x16f1):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox11groupLayoutEv'
release/test.o(.text+0x180e):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x1848):test.cpp: undefined reference to `_imp___ZN12iisTas
kGroupC1EP7QWidgetb'
release/test.o(.text+0x1879):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x194f):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x1a13):test.cpp: undefined reference to `_imp___ZN12iisTas
kGroup12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x1aae):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x1b40):test.cpp: undefined reference to `_imp___ZN12iisTas
kGroup12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x1b58):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel10addStretchEi'
release/test.o(.text+0x22dd):test.cpp: undefined reference to `_imp___ZN10iisTas
kBoxC1ERK7QPixmapRK7QStringbP7QWidget'
release/test.o(.text+0x2387):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x245d):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x251f):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x262d):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x26f1):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x273c):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox11groupLayoutEv'
release/test.o(.text+0x2831):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x28f2):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x29fe):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x2abf):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x2b6a):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabel9setColorsERK6QColorS2_S2_'
release/test.o(.text+0x2b93):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabel11setFocusPenERK4QPen'
release/test.o(.text+0x2c8d):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x2d51):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x2e15):test.cpp: undefined reference to `_imp___ZN10iisTas
kBoxC1ERK7QPixmapRK7QStringbP7QWidget'
release/test.o(.text+0x2ebf):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x2f95):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x305d):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x3134):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x31f5):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x32e7):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x33ab):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x342e):test.cpp: undefined reference to `_imp___ZN10iisTas
kBoxC1ERK7QPixmapRK7QStringbP7QWidget'
release/test.o(.text+0x34a3):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x353b):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x35ca):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x365e):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x36f1):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x3782):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox11groupLayoutEv'
release/test.o(.text+0x3861):test.cpp: undefined reference to `_imp___ZN10iisTas
kBox11groupLayoutEv'
release/test.o(.text+0x397e):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x39b8):test.cpp: undefined reference to `_imp___ZN12iisTas
kGroupC1EP7QWidgetb'
release/test.o(.text+0x39e9):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel9addWidgetEP7QWidget'
release/test.o(.text+0x3abf):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x3b83):test.cpp: undefined reference to `_imp___ZN12iisTas
kGroup12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x3c1e):test.cpp: undefined reference to `_imp___ZN12iisIco
nLabelC1ERK5QIconRK7QStringP7QWidget'
release/test.o(.text+0x3cb0):test.cpp: undefined reference to `_imp___ZN12iisTas
kGroup12addIconLabelEP12iisIconLabelb'
release/test.o(.text+0x3cc8):test.cpp: undefined reference to `_imp___ZN12iisTas
kPanel10addStretchEi'
release/test.o(.text$_ZN12Ui_testClass7setupUiEP11QMainWindow[Ui_testClass::setu
pUi(QMainWindow*)]+0x342):test.cpp: undefined reference to `_imp___ZN12iisTaskPa
nelC1EP7QWidget'
collect2: ld returned 1 exit status
mingw32-make[3]: *** [release\test.exe] Error 1
mingw32-make[3]: Leaving directory `D:/Work/iis/Projects/iisTaskPanel/tests/test
'
mingw32-make[2]: *** [release] Error 2
mingw32-make[2]: Leaving directory `D:/Work/iis/Projects/iisTaskPanel/tests/test
'
mingw32-make[1]: *** [sub-test-make_default] Error 2
mingw32-make[1]: Leaving directory `D:/Work/iis/Projects/iisTaskPanel/tests'
mingw32-make: *** [sub-tests-make_default-ordered] Error 2

Qt 4.3.3 и 4.3.4 open source
Visual Studio 2005
MinGW 3.4.5
Windows XP SP2

Также есть еще одна проблема - судя по всему, некорректно работает make clean.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Апрель 26, 2008, 14:31 »

Немножко подредактировал конф файлы и iistaskpanel_global.h. Попробуй собрать сейчас.

Проверил на Qt 4.3.4, MinGW, VS2005+SP1. Под линуксом времени небыло собрать

ЗЫ: iisTaskPanel взял на http://www.qt-apps.org/content/show.php?content=79286. Под 2005 студию и Qt 4.3.4 не собралось (ни в статике не в шареде). Под мингв тоже самое.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Апрель 26, 2008, 19:05 »

спасибо! вроде заработало Улыбающийся
а в чем причина то была? я особых различий не заметил в проектах...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
ритт
Гость
« Ответ #3 : Апрель 26, 2008, 20:29 »

я под мингвом заметил такое: указываем статиклиб - собирается либа, но не собирается приложение; указываем статик - всё собирается нормально

в фичах кутэ нашёл прф-ку, в которой из статика и тэмплейта получается конфиг+=статиклиб или конфиг+=статик для либы или аппа, соответственно
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Апрель 26, 2008, 23:51 »

спасибо! вроде заработало Улыбающийся
а в чем причина то была? я особых различий не заметил в проектах...

Нектороые макросы юзались с другого проекта Подмигивающий Думаю ты понял с какого Подмигивающий

Я просто изменил названия некоторых макросов, и перепахал профайлы согласно тем изменениям, которые я провел в нашем общем проекте в недавнее время Подмигивающий
« Последнее редактирование: Апрель 26, 2008, 23:55 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Апрель 26, 2008, 23:52 »

я под мингвом заметил такое: указываем статиклиб - собирается либа, но не собирается приложение; указываем статик - всё собирается нормально

в фичах кутэ нашёл прф-ку, в которой из статика и тэмплейта получается конфиг+=статиклиб или конфиг+=статик для либы или аппа, соответственно

А такое поведение с какими исходниками? Racheengel из первого поста или моими из второго?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #6 : Апрель 27, 2008, 00:27 »

из первого поста. твои я, честно говоря, не заметил
но лучше всё же пользовать статик, а не статиклиб - кумэйк сам разберётся что указывать в конфиге (конечно, если темплейт указан)
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #7 : Апрель 27, 2008, 01:30 »

спасибо! вроде заработало Улыбающийся
а в чем причина то была? я особых различий не заметил в проектах...

Нектороые макросы юзались с другого проекта Подмигивающий Думаю ты понял с какого Подмигивающий

Я просто изменил названия некоторых макросов, и перепахал профайлы согласно тем изменениям, которые я провел в нашем общем проекте в недавнее время Подмигивающий

Ага, это то я понял Улыбающийся
Я имел в виду - с точки зрения логики в чем разница?
По идее логика то не поменялась, просто некоторые вещи ты переименовал, и все по большому счету...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Апрель 27, 2008, 18:09 »

Ага, это то я понял Улыбающийся
Я имел в виду - с точки зрения логики в чем разница?
По идее логика то не поменялась, просто некоторые вещи ты переименовал, и все по большому счету...

Разница в том что:
1. В config.pri былв строка CONFIG += $$LIB_CONFIG, это было неверно, т.к. config.pri инклудиться в профайлы приожения (test). Эта строка должна присудстваовать только в src.pro.

2. Для статической сборки ненужен экспорт (IISTASKPANEL_EXPORT). см. iistaskpanel_global.h. В этой связи был добавлен макрос QIIS_STATICLIB. см. config.pri

3. Было исправлено имя макроса с DEFINES +=  QICS_MAKEDLL на DEFINES +=  QIIS_MAKEDLL. т.к. в iistaskpanel_global.h юзался QIIS_MAKEDLL. см. src.pro

4. Остальные изменения, впринципе, роли не сыграли
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #9 : Апрель 27, 2008, 18:41 »

Пастор, а вот вариант конфига, который скидывал ранее - его не видел?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Апрель 27, 2008, 22:12 »

Пастор, а вот вариант конфига, который скидывал ранее - его не видел?

Чесно сказать не видел. Улыбающийся

ЗЫ: Я юзаю скажем так свой временами уже отработанный шаблон создания либ
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
OKTA
Гость
« Ответ #11 : Июнь 21, 2012, 11:31 »

Мужики!! Помогите!!! http://www.prog.org.ru/topic_22263_0.html
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 23.