Проблема с линкером |
Здравствуйте, гость ( Вход | Регистрация )
Проблема с линкером |
Andrewshkovskii |
9.6.2010, 12:48
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Скачал себе QT Nokia SDK, что бы девелопить софт под симбиан. Скачал расширение классов для мобильных телефонов Тык , установил все как было сказано в вики. Но есть проблема при линковке проектов , а точнее вот что происходит :
Цитата Configuration unchanged, skipping qmake step. Starting: D:/storage/programming/MinGW/bin/mingw32-make.exe -w mingw32-make: Entering directory `D:/storage/programming/QtSymbian/XQ/extensions/examples/TelephonyEx-build' D:/storage/programming/MinGW/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory `D:/storage/programming/QtSymbian/XQ/extensions/examples/TelephonyEx-build' linking debug\TelephonyEx.exe mingw32-make[1]: Leaving directory `D:/storage/programming/QtSymbian/XQ/extensions/examples/TelephonyEx-build' mingw32-make: Leaving directory `D:/storage/programming/QtSymbian/XQ/extensions/examples/TelephonyEx-build' debug/telephonyexwindow.o: In function `TelephonyExWindow': D:\storage\programming\QtSymbian\XQ\extensions\examples\TelephonyEx-build/../telephonyex/telephonyexwindow.cpp:9: undefined reference to `_imp___ZN11XQTelephonyC1EP7QObject' D:\storage\programming\QtSymbian\XQ\extensions\examples\TelephonyEx-build/../telephonyex/telephonyexwindow.cpp:12: undefined reference to `_imp___ZN11XQTelephony19startMonitoringLineEv' D:\storage\programming\QtSymbian\XQ\extensions\examples\TelephonyEx-build/../telephonyex/telephonyexwindow.cpp:9: undefined reference to `_imp___ZN11XQTelephonyC1EP7QObject' D:\storage\programming\QtSymbian\XQ\extensions\examples\TelephonyEx-build/../telephonyex/telephonyexwindow.cpp:12: undefined reference to `_imp___ZN11XQTelephony19startMonitoringLineEv' debug/telephonyexwindow.o:D:\storage\programming\QtSymbian\XQ\extensions\examples\TelephonyEx-build/../telephonyex/telephonyexwindow.cpp:32: undefined reference to `_imp___ZN11XQTelephony4callERK7QString' collect2: ld returned 1 exit status mingw32-make[1]: *** [debug\TelephonyEx.exe] Error 1 mingw32-make: *** [debug] Error 2 Exited with code 2. Т.е. линкер не может в объектном файле найти вход для функций класса, т.е. как будто не линкует исходники класса TelephonyExWindow. Но как же это так?Все инклюды винды, в про файле пути прописал к хидерам, объектник создается, но не линкуется? В чем может быть проблема? Т.е. я понимаю, что это наврядтли проблема с самим Qt/эти расширением, тут что-то я криво настроил.. Есть какие-нибудь идеи? Сообщение отредактировал Andrewshkovskii - 9.6.2010, 12:58 |
|
|
Vass |
9.6.2010, 13:47
Сообщение
#2
|
Студент Группа: Участник Сообщений: 46 Регистрация: 17.3.2009 Из: Россия, Рыбинск Пользователь №: 617 Спасибо сказали: 8 раз(а) Репутация: 0 |
Скорее всего вы забыли подключить библиотеки в pro файл
делается это примерно так
|
|
|
Andrewshkovskii |
9.6.2010, 17:41
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Сейчас будет тупой вопрос :
расширение либы должно быть .a или .dll? или вовсе без расширения. И l - это префикс или составляющая имени? |
|
|
Iron Bug |
9.6.2010, 20:09
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
ещё подобное бывает, когда одни исходники компилятся в сишном формате, а другие - в C++. тогда линкер не может сопоставить расширенные имена и стандартные.
|
|
|
Andrewshkovskii |
9.6.2010, 20:48
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Те исходники точно C++, а вот проблема может быть, что они не заточены по 4.6 (напимер, собраны версией 4.5.. )
|
|
|
Litkevich Yuriy |
10.6.2010, 9:16
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
расширение либы должно быть .a или .dll? или вовсе без расширения. для pro-файла, без расширения, тогда qmake сам его подставит, в зависимости от платформы.И l - это префикс или составляющая имени? это "маленькая эль", префикс. Например для: libqextserialport.a qextserialport.dll пишется -lqextserialport Есть ещё "большая эль" тоже префикс для пути к библиотеки, но для qmake можно писать так: INCLUDEPATH += Path/to/qextserialport-1.1/include QMAKE_LIBDIR += Path/to/qextserialport-1.1/build LIBS += -lqextserialport Запись: QMAKE_LIBDIR += Path/to/qextserialport-1.1/build Эквивалентна LIBS = -LPath/to/qextserialport-1.1/build |
|
|
Andrewshkovskii |
10.6.2010, 11:42
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Полазив вчера весь день по форумам, я нашел вроде бы решение, а вроде бы и нет...
Значит так , надо было изменить файл проекта следующим образом :
Т.е. переместить исходники либы в проект. Но в исходниках либы есть другие инклюды , и их почему-то не видно. Это инклюды лежат у меня в D:\storage\programming\QtSymbian\Symbian\SDK\epoc32, как видно из .pro файла, я их добавил в путь к инклюдам, но мейк их всеравно не видит.. В %PATH% тоже прописаны, их получается вообще не видит криэйтор. что же я сделал не так? === Вроде сделал, что бы было видно. Но теперь те хидеры, что идут с SDK не собираются, тамошние типы аля "TUint" gcc не знает.. ===== Потом я попробовал все таки справиться с путями к либам и инклюдам, подправил .pro вот так вот :
И вернулся к первоначальной ошибке. Может проблема в том, что эти либы собраны другим..компилятором, под другую версию Qt? Сообщение отредактировал Andrewshkovskii - 10.6.2010, 12:08 |
|
|
Текстовая версия | Сейчас: 28.4.2024, 5:25 |