crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблема с линкером
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 файл
делается это примерно так
LIBS += -L./путь/к/папке/либ \
    -lимялибы
# имя либы != имя файла либы

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


Цитата(Andrewshkovskii @ 9.6.2010, 21:41) *
расширение либы должно быть .a или .dll? или вовсе без расширения.
для pro-файла, без расширения, тогда qmake сам его подставит, в зависимости от платформы.

Цитата(Andrewshkovskii @ 9.6.2010, 21:41) *
И 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  


Полазив вчера весь день по форумам, я нашел вроде бы решение, а вроде бы и нет...
Значит так , надо было изменить файл проекта следующим образом :
TARGET = TelephonyEx
TEMPLATE = app

SOURCES += main.cpp \
    telephonyexwindow.cpp

HEADERS += telephonyexwindow.h

FORMS += telephonyexwindow.ui

DEFINES += XQTELEPHONY_NO_LIBRARY
include(D:\storage\programming\QtSymbian\ext\extensions\src\telephony\telephony.pri)

INCLUDEPATH += D:\storage\programming\QtSymbian\ext\extensions\include
INCLUDEPATH += ..\..\include \
            D:\storage\programming\QtSymbian\Symbian\SDK\epoc32\include# это я добавил сам
DEPENDPATH += D:\storage\programming\QtSymbian\ext\extensions\src\telephony

Т.е. переместить исходники либы в проект. Но в исходниках либы есть другие инклюды , и их почему-то не видно. Это инклюды лежат
у меня в D:\storage\programming\QtSymbian\Symbian\SDK\epoc32, как видно из .pro файла, я их добавил в путь к инклюдам, но мейк их всеравно не видит.. В %PATH% тоже прописаны, их получается вообще не видит криэйтор. что же я сделал не так?
===
Вроде сделал, что бы было видно. Но теперь те хидеры, что идут с SDK не собираются, тамошние типы аля "TUint" gcc не знает..
=====
Потом я попробовал все таки справиться с путями к либам и инклюдам, подправил .pro вот так вот :
TARGET = TelephonyEx
TEMPLATE = app

SOURCES += main.cpp \
    telephonyexwindow.cpp

HEADERS += telephonyexwindow.h

FORMS += telephonyexwindow.ui

INCLUDEPATH += ..\..\include \
        D:/storage/programming/QtSymbian/Symbian/SDK/epoc32/include
QMAKE_LIBDIR += D:\storage\programming\QtSymbian\Symbian\SDK\epoc32\release\winscw\udeb \

LIBS += -lxqtelephony

И вернулся к первоначальной ошибке. Может проблема в том, что эти либы собраны другим..компилятором, под другую версию Qt?

Сообщение отредактировал Andrewshkovskii - 10.6.2010, 12:08
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 19:21