Проблемы сборки с приложением Qt на основе libzbar

Я использую libzbarQT (libzbarQT.so) в своем коде QT. Я сталкиваюсь с ошибкой при создании кода, говорящего «неопределенная ссылка на QWidget::qwsEvent(QWSEvent *event)». Я не использую эту функцию в своем коде QT. Я хочу знать, какая функция внутренне вызывает эту функцию, чтобы я мог немного настроить библиотеку. Любые предложения, пожалуйста..

Заранее благодарю за любую помощь.

PS: я кросскомпилирую свой код, используя набор инструментов arm-none-linux-gnueabi-g++ с LTIB. Чтобы устранить ошибку «/usr/lib/libzbarqt.so: неопределенная ссылка на ошибку QX11Info::display()', I have build Qt with X11.Now I am getting error:libzbarqt.so: undefined reference toQWidget::qwsEvent(QWSEvent*)».


person Adi    schedule 31.12.2013    source источник
comment
Покажите свой код и файл проекта. Я предполагаю, что это Qt 4?   -  person lpapp    schedule 31.12.2013
comment
Да, это Qt 4. Я вставляю свой профайл.   -  person Adi    schedule 31.12.2013
comment
QT+= core gui INCLUDEPATH += /home/sainath/ltib/ltib/rootfs/usr/include/ #greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = NewDemo TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp ЗАГОЛОВКИ += mainwindow.h ФОРМЫ += mainwindow.ui LIBS += -L/home/sainath/ltib/ltib/rootfs/usr/lib/ LIBS += -lQtGui -lQtCore -ljpeg -lv4l2 -lSM -lICE -lX11 - lv4lconvert -lxcb-xlib -lXau -lxcb LIBS += -lzbar LIBS += -lzbarqt   -  person Adi    schedule 31.12.2013
comment
Эээ, не в комментарии! В любом случае, вот вставка: pastebin.kde.org/patab2xho   -  person lpapp    schedule 31.12.2013
comment
Чтобы устранить ошибку «/usr/lib/libzbarqt.so: неопределенная ссылка на ошибку QX11Info::display()', I have build Qt with X11.Now I am getting error:libzbarqt.so: undefined reference to QWidget::qwsEvent(QWSEvent*)».   -  person Adi    schedule 31.12.2013
comment
Какую именно версию qt вы используете? Вы проверили с помощью nm -a или objdump, есть ли в вашей библиотеке qt требуемый символ? Однако без билда с символами работать не будет.   -  person lpapp    schedule 31.12.2013
comment
Я использую Qt4.6.0. Я проверил с помощью nm -a libqtgui.so, но не нашел этого символа.   -  person Adi    schedule 31.12.2013
comment
Это означает, что вы используете несовместимую сборку Qt для вашей версии libzbarqt. Вам либо нужно получить тот, который соответствует этому, либо вам нужно исправить использование символов, но это может быть много работы. Вы также можете попробовать скачать другую версию libzbarqt.   -  person lpapp    schedule 31.12.2013
comment
Я использую последнюю версию libzbarqt. Рекомендуется использовать версию Qt выше 4. Не могли бы вы объяснить, что подразумевается под исправлением использования символов.   -  person Adi    schedule 31.12.2013
comment
Я не уверен, какое объяснение это требует. Вам нужно получить версию qt, имеющую этот символ, или вам нужно изменить библиотеку, созданную, чтобы не использовать этот символ.   -  person lpapp    schedule 31.12.2013
comment
Я проверил эту функцию qwsEvent() в исходном коде libzbar. Я не мог найти его. Можем ли мы узнать, используется ли эта функция в других библиотеках, от которых зависит libzbarqt.so.   -  person Adi    schedule 31.12.2013
comment
Возможно, ваша динамическая библиотека zbar была создана для встроенной версии qt, а не для настольного Linux. Вы уверены, что не перепутали встраиваемую и десктопную установку? qws * был доступен только для встроенных, поэтому, если это необходимо, вам нужна встроенная установка Qt, а не рабочий стол. Они были отдельными.   -  person lpapp    schedule 31.12.2013
comment
Проблема решена сейчас?   -  person lpapp    schedule 30.01.2014
comment
Да..Спасибо за вклад   -  person Adi    schedule 30.01.2014


Ответы (1)


В общем, вы можете убедиться, что символы присутствуют в библиотеке, если только она не построена без символов. Я обычно использую для этой операции утилиты nm -a и objdump.

Более того: кажется, что динамическая библиотека zbar, которая у вас есть, была создана для встроенной версии Qt, а не для настольного Linux.

К сожалению, обе версии имеют одинаковые имена файлов динамической библиотеки, поэтому такие вещи, как ldd, не могут помочь.

Вам нужно убедиться, что вы используете точно ту же версию установки Qt, для которой была собрана библиотека. Это означает, что если вы используете для этого настольную установку Linux, она не будет работать.

person lpapp    schedule 01.01.2014