crossplatform.ru

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

 
Тема закрытаНачать новую тему
> Проблема с загрузкой плагина, Cannot load library ... undefined symbol ...
ViGOur
  опции профиля:
сообщение 27.7.2015, 11:07
Сообщение #1


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Загружаю плагины так:
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *pPlugin = pluginLoader.instance();
if (pPlugin)
{
// ...
}
else
{
    qDebug() << "Error loading plugin: " << fileName << " - " << pluginLoader.errorString();
}
Мой плагин, который использует стороннюю библиотеку pjsip, не грузится и пишет:
Цитата
Error loading plugin: "libSipWrapper.so" - "Cannot load library ./Debug/libSipWrapper.so: (./Debug/libSipWrapper.so: undefined symbol: _ZTIN2pj4CallE)"

Пробовал класть в папку с плагинами и бинарником используемые данным плагином либы (получил их с помощью ldd), всеравно та же ошибка.

Не могу понять куда копать с ее исправлением.

p.s. другие плагины, которые не используют сторонние lib'ы грузятся нормально...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 27.7.2015, 18:07
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


возможная проблема libSipWrapper.so - это rpath прописанные при сборке как абсолютные пути.

Либо относительные пути показывают несколько в иное место.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 27.7.2015, 18:13
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Неее, я просто сократил и скрыл пароли явки рабочие! :)
Если из плагина убрать обращение к pjsip, то он грузится нормально, но как только добавляю его, все, пишет ошибку... :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.7.2015, 10:06
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Может в pro файле накосячил?
"SipWrapper.pro"
QT       += core

TARGET = SipWrapper
TEMPLATE = lib
CONFIG += plugin thread x11 sdl

DESTDIR = ..

LIBS += ../../../SipWrapper/pjproject-2.3/pjlib/lib/libpj-x86_64-unknown-linux-gnu.a
LIBS += ../../../SipWrapper/pjproject-2.3/pjsip/lib/libpjsua2-x86_64-unknown-linux-gnu.a

# Input
HEADERS += \
    sipcall.h \
    sipaccount.h \
    sipmanager.h \
    sipwrapper.h \
    sipwrapperinterface.h \
    ../maininterface.h

SOURCES +=  \
    sipcall.cpp \
    sipaccount.cpp \
    sipmanager.cpp \
    sipwrapper.cpp \
    sipwrapperinterface.cpp
Гляньте, а то у меня уже глаз замылен...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 28.7.2015, 10:07
Сообщение #5


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


а ты линкуешь к ней этот самый pjsip? скорее всего, там просто неразрешённые символы. в библиотеках это нормально, но если при линковке они остаются неразрешёнными - тогда могут быть проблемы.
P.S. он также может тянуть за собой другие зависимости. там какой-то вызов Call, судя по символу. почитай про его зависимости.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.7.2015, 10:46
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Да, линкую. Но вроде все должно быть нормально, разрешено должно быть все.
Попробую сейчас плагин переделать в app, посмотрим как себя поведет бинарник, а там видно будет что с ним там делать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.7.2015, 15:52
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Получилось воспроизвести при компиляции app, походу я сбил случайно сборку, делая configure, с новыми параметрами...
Думается мне, что поправив эту сборку, заработает и плагин.

Ошибки начинаются с такой строки:
Цитата
... sipcall.cpp:6: undefined reference to `pj::Call::Call(pj::Account&, int)'

Так что Iron Bug, ты была полностью права про неразрешенные линки!

----------------------------- Добавление -----------------------------
Все немного оказалось не так, в pro файле для pjsip при использовании pjsua2 не хватало вот таких вот строк:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/pjproject-2.3/pjsip/lib/release/ -lpjsua2
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/pjproject-2.3/pjsip/lib/debug/ -lpjsua2
else:unix: LIBS += -L$$PWD/pjproject-2.3/pjsip/lib/ -lpjsua2

INCLUDEPATH += $$PWD/pjproject-2.3/pjsip/include
DEPENDPATH += $$PWD/pjproject-2.3/pjsip/include
мало ли кому пригодится...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.4.2024, 4:49