Название: Проблема линковки статической библиотеки в мингв и студии
Отправлено: Racheengel от Апрель 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.
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: pastor от Апрель 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 не собралось (ни в статике не в шареде). Под мингв тоже самое.
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: Racheengel от Апрель 26, 2008, 19:05
спасибо! вроде заработало :) а в чем причина то была? я особых различий не заметил в проектах...
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: ритт от Апрель 26, 2008, 20:29
я под мингвом заметил такое: указываем статиклиб - собирается либа, но не собирается приложение; указываем статик - всё собирается нормально
в фичах кутэ нашёл прф-ку, в которой из статика и тэмплейта получается конфиг+=статиклиб или конфиг+=статик для либы или аппа, соответственно
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: pastor от Апрель 26, 2008, 23:51
спасибо! вроде заработало :) а в чем причина то была? я особых различий не заметил в проектах...
Нектороые макросы юзались с другого проекта ;) Думаю ты понял с какого ;) Я просто изменил названия некоторых макросов, и перепахал профайлы согласно тем изменениям, которые я провел в нашем общем проекте в недавнее время ;)
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: pastor от Апрель 26, 2008, 23:52
я под мингвом заметил такое: указываем статиклиб - собирается либа, но не собирается приложение; указываем статик - всё собирается нормально
в фичах кутэ нашёл прф-ку, в которой из статика и тэмплейта получается конфиг+=статиклиб или конфиг+=статик для либы или аппа, соответственно
А такое поведение с какими исходниками? Racheengel из первого поста или моими из второго?
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: ритт от Апрель 27, 2008, 00:27
из первого поста. твои я, честно говоря, не заметил но лучше всё же пользовать статик, а не статиклиб - кумэйк сам разберётся что указывать в конфиге (конечно, если темплейт указан)
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: Racheengel от Апрель 27, 2008, 01:30
спасибо! вроде заработало :) а в чем причина то была? я особых различий не заметил в проектах...
Нектороые макросы юзались с другого проекта ;) Думаю ты понял с какого ;) Я просто изменил названия некоторых макросов, и перепахал профайлы согласно тем изменениям, которые я провел в нашем общем проекте в недавнее время ;) Ага, это то я понял :) Я имел в виду - с точки зрения логики в чем разница? По идее логика то не поменялась, просто некоторые вещи ты переименовал, и все по большому счету...
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: pastor от Апрель 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. Остальные изменения, впринципе, роли не сыграли
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: ритт от Апрель 27, 2008, 18:41
Пастор, а вот вариант конфига, который скидывал ранее - его не видел?
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: pastor от Апрель 27, 2008, 22:12
Пастор, а вот вариант конфига, который скидывал ранее - его не видел?
Чесно сказать не видел. :) ЗЫ: Я юзаю скажем так свой временами уже отработанный шаблон создания либ
Название: Re: Проблема линковки статической библиотеки в мингв и студии
Отправлено: OKTA от Июнь 21, 2012, 11:31
Мужики!! Помогите!!! http://www.prog.org.ru/topic_22263_0.html
|