Название: Вопрос по созданию динамически подключаемых библиотек, Отправлено: sibmail от Декабрь 22, 2009, 11:55 в силу некоторых обстоятельств пришлось работать с qt3 (в Alt Linux). возникла задача разделения проекта на нескольких людей, каждый из которых отвечает за свой код.
пришли к решению в переносе части кода общего проекта в библиотеки (типа dll в винде). подскажите как создавать такие библиотеки в линуксе? Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: SASA от Декабрь 22, 2009, 14:25 http://www.prog.org.ru/topic_8259_0.html (http://www.prog.org.ru/topic_8259_0.html) почитай - мож поможет ;)
Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: sibmail от Декабрь 22, 2009, 14:40 http://www.prog.org.ru/topic_8259_0.html (http://www.prog.org.ru/topic_8259_0.html) почитай - мож поможет ;) В общем как я понял никто в этом не разбирается. Может кто знает почему не работает следующий код: ... QLibrary lib( "dlltest.so" ); if (!lib.load()) { qDebug("not load"); } ... Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: Dendy от Декабрь 23, 2009, 00:43 Не найдена библиотека или одна из зависимостей.
Цитировать В общем как я понял никто в этом не разбирается. Да как раз наоборот. Вопрос настолько элементарный, что всем лень разжёвывать (-8 Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: ildar от Декабрь 23, 2009, 11:14 а зачем загружать библиотеки вручную?
если набор библиотек известен, можно указать зависимости при сборке проекта. посмотрите как это делается в QtSolutions компонентах. Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: niXman от Декабрь 23, 2009, 12:17 Цитировать В общем как я понял никто в этом не разбирается. дык. ты подобную тему создавай в нужном разделе, в линукс например. давно бы получил ответ)вопросы еще есть? зы модераторы, переместите тему в нужный раздел. а то я в эту тему не ходок. Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: pastor от Декабрь 23, 2009, 13:41 В общем как я понял никто в этом не разбирается. А чем линк на How To от SASA неугодил? Помоему там все расжовано, есть примеры Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: Alex Custov от Декабрь 23, 2009, 15:04 Может кто знает почему не работает следующий код: ... QLibrary lib( "dlltest.so" ); if (!lib.load()) { qDebug("not load"); } ... Код
Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: BRE от Декабрь 23, 2009, 15:17 Код
Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: Alex Custov от Декабрь 23, 2009, 15:27 Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: pastor от Декабрь 23, 2009, 16:59 К сожалению, в Qt3 такого метода нет. ;) ..но QString::ascii() никто не отменял (это про qPrintable()) ;) а errorString() напрочь отсутствует. Вопрос автору: зачем исползовать QLibrary? Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: sibmail от Декабрь 24, 2009, 07:17 QLibrary для загрузки и работы с библиотекой. Ну не хочется весь код держать в одном приложении.
Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: niXman от Декабрь 24, 2009, 07:32 Код для начала посмотри что сообщит тебе эта функция. отпишешься. Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: sibmail от Декабрь 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(); } Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: niXman от Декабрь 24, 2009, 09:47 вот и ответ.
надеюсь тебе знаком принцип поиска динамических библиотек загрузчиком? и кто такой загрузчик? и как он работает? все ответы есть тут: Цитировать man ld.so импорт динамической библиотеки: Цитировать man ldd экспорт и всякую информацию можно узнать: Цитировать man readelf Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: pastor от Декабрь 24, 2009, 15:21 QLibrary для загрузки и работы с библиотекой. Ну не хочется весь код держать в одном приложении. Ненужно использовать QLibrary (усложнять себе жизнь). Библиотеку вы пишите сами. Результатом компиляции будет *.a (*.lib на винде) или *.so (*.dll) файлы. Это для статической и динамической сборки соответсвенно. Полученную либу ципляете к своему проекту и все. *.so будет подгружаться динамически. В случае с *.a - "встроена" в приложение. А использование QLibrary в данном млучае это полный бред. Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: sibmail от Декабрь 24, 2009, 17:45 может кто напишет пример или даст простой исходник?
Название: Re: Вопрос по созданию динамически подключаемых библиотек, Отправлено: pastor от Декабрь 24, 2009, 17:47 может кто напишет пример или даст простой исходник? эммм... ну как бы SASA во втором посте темы дал ссылку.. описание исходники там есть. Работает под винду и линукс |