Russian Qt Forum
Ноябрь 26, 2024, 19:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Вопрос по созданию динамически подключаемых библиотек,  (Прочитано 10574 раз)
sibmail
Гость
« : Декабрь 22, 2009, 11:55 »

в силу некоторых обстоятельств пришлось работать с qt3 (в Alt Linux). возникла задача разделения проекта на нескольких людей, каждый из которых отвечает за свой код.
пришли к решению в переносе части кода общего проекта в библиотеки (типа dll в винде).

подскажите как создавать такие библиотеки в линуксе?
Записан
SASA
Гость
« Ответ #1 : Декабрь 22, 2009, 14:25 »

http://www.prog.org.ru/topic_8259_0.html почитай - мож поможет Подмигивающий
Записан
sibmail
Гость
« Ответ #2 : Декабрь 22, 2009, 14:40 »

http://www.prog.org.ru/topic_8259_0.html почитай - мож поможет Подмигивающий

В общем как я понял никто в этом не разбирается.
Может кто знает почему не работает следующий код:
...
QLibrary lib( "dlltest.so" );
if (!lib.load())
{ qDebug("not load");
 }
...
Записан
Dendy
Гость
« Ответ #3 : Декабрь 23, 2009, 00:43 »

Не найдена библиотека или одна из зависимостей.

Цитировать
В общем как я понял никто в этом не разбирается.

Да как раз наоборот. Вопрос настолько элементарный, что всем лень разжёвывать (-8
Записан
ildar
Гость
« Ответ #4 : Декабрь 23, 2009, 11:14 »

а зачем загружать библиотеки вручную?
если набор библиотек известен, можно указать зависимости при сборке проекта. посмотрите как это делается в QtSolutions компонентах.
Записан
niXman
Гость
« Ответ #5 : Декабрь 23, 2009, 12:17 »

Цитировать
В общем как я понял никто в этом не разбирается.
дык. ты подобную тему создавай в нужном разделе, в линукс например. давно бы получил ответ)
вопросы еще есть?

зы
модераторы, переместите тему в нужный раздел. а то я в эту тему не ходок.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Декабрь 23, 2009, 13:41 »

В общем как я понял никто в этом не разбирается.

А чем линк на How To от SASA неугодил? Помоему там все расжовано, есть примеры
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Декабрь 23, 2009, 15:04 »

Может кто знает почему не работает следующий код:
...
QLibrary lib( "dlltest.so" );
if (!lib.load())
{ qDebug("not load");
 }
...

Код
Diff
-{ qDebug("not load");
+{ qDebug("not load (%s)", qPrintable(lib.errorString()));
 
Записан
BRE
Гость
« Ответ #8 : Декабрь 23, 2009, 15:17 »

Код
Diff
-{ qDebug("not load");
+{ qDebug("not load (%s)", qPrintable(lib.errorString()));
 
К сожалению, в Qt3 такого метода нет.  Подмигивающий
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Декабрь 23, 2009, 15:27 »

К сожалению, в Qt3 такого метода нет.  Подмигивающий

блин, точно Строит глазки
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Декабрь 23, 2009, 16:59 »

К сожалению, в Qt3 такого метода нет.  Подмигивающий

..но QString::ascii() никто не отменял (это про qPrintable()) Подмигивающий

а errorString() напрочь отсутствует.


Вопрос автору: зачем исползовать QLibrary?
« Последнее редактирование: Декабрь 23, 2009, 17:02 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
sibmail
Гость
« Ответ #11 : Декабрь 24, 2009, 07:17 »

QLibrary для загрузки и работы с библиотекой. Ну не хочется весь код держать в одном приложении.
Записан
niXman
Гость
« Ответ #12 : Декабрь 24, 2009, 07:32 »

Код
C++ (Qt)
QString is_mi_error = dlerror();
 
для начала посмотри что сообщит тебе эта функция. отпишешься.
Записан
sibmail
Гость
« Ответ #13 : Декабрь 24, 2009, 09:24 »

невозможно открыть разделяемый объектный файл: Нет такого файла или каталога.
у кого есть примеры к книге Shlee Qt3, раздел DynLib
APPLICATION:
#include <qapplication.h>
#include <qlabel.h>
#include <qlibrary.h>

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QLabel       lbl("", 0);
    QLibrary     lib("dynlib");

    if (!lib.isLoaded()) {
        lib.load();
    }

    typedef char* (*Fct) ();
    Fct fct = (Fct)(lib.resolve("sayHello"));
    if (fct) {
        lbl.setText(fct());
    }

    app.setMainWidget(&lbl);
    lbl.show();

    return app.exec();
}

Записан
niXman
Гость
« Ответ #14 : Декабрь 24, 2009, 09:47 »

вот и ответ.
надеюсь тебе знаком принцип поиска динамических библиотек загрузчиком? и кто такой загрузчик? и как он работает?

все ответы есть тут:
Цитировать
man ld.so

импорт динамической библиотеки:
Цитировать
man ldd

экспорт и всякую информацию можно узнать:
Цитировать
man readelf
« Последнее редактирование: Декабрь 24, 2009, 09:52 от niXman » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.237 секунд. Запросов: 23.