crossplatform.ru

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


  Ответ в Проблема с линкером
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Andrewshkovskii Дата 10.6.2010, 11:42
  Полазив вчера весь день по форумам, я нашел вроде бы решение, а вроде бы и нет...
Значит так , надо было изменить файл проекта следующим образом :
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?
Litkevich Yuriy Дата 10.6.2010, 9:16
 
Цитата(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 Дата 9.6.2010, 20:48
  Те исходники точно C++, а вот проблема может быть, что они не заточены по 4.6 (напимер, собраны версией 4.5.. )
Iron Bug Дата 9.6.2010, 20:09
  ещё подобное бывает, когда одни исходники компилятся в сишном формате, а другие - в C++. тогда линкер не может сопоставить расширенные имена и стандартные.
Andrewshkovskii Дата 9.6.2010, 17:41
  Сейчас будет тупой вопрос :
расширение либы должно быть .a или .dll? или вовсе без расширения. И l - это префикс или составляющая имени?
Vass Дата 9.6.2010, 13:47
  Скорее всего вы забыли подключить библиотеки в pro файл
делается это примерно так
LIBS += -L./путь/к/папке/либ \
    -lимялибы
# имя либы != имя файла либы

Andrewshkovskii Дата 9.6.2010, 12:48
  Скачал себе 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/эти расширением, тут что-то я криво настроил..
Есть какие-нибудь идеи?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 21:18