crossplatform.ru

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

RazrFalcon
  опции профиля:
сообщение 27.9.2010, 19:44
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Краткое HOW TO пожалуйста. Все что нахожу, какая то ересь не имеющая никакого отношения к кьюту, и это на считая что 4/5 выданных вариантов на запрос о динамических библиотеках относится к тому "как скомпилить кьют в статике".
Вкратце:
нужно собрать под лином динамическую библиотеку, а потом основной прогой (gui или cli неважно) ее использовать. То есть мне нужно чтоб можно было менять некоторый функционал проги без перекомпиляции основного файла. Ну и чтоб другие проги тоже использовали.
Одним словом нужно собрать shared libraris aka .so
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
3 страниц V   1 2 3 >  
Начать новую тему
Ответов (1 - 20)
Litkevich Yuriy
  опции профиля:
сообщение 27.9.2010, 20:00
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(RazrFalcon @ 27.9.2010, 23:44) *
Все что нахожу, какая то ересь не имеющая никакого отношения к кьюту
а ты по нашему форуму искал? Здесь был полный пример
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.9.2010, 20:33
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Конечно, но большинство уже проблемы с готовыми библиотеками или dll. А для меня, ничего в этом пока не понимающего это дебри.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.9.2010, 21:42
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


приведи пример того, что ты нашёл у нас на форуме
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.9.2010, 21:51
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Вот
и вот
к примеру, ничего полезного для себя не нашел
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 27.9.2010, 22:47
Сообщение #6


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(RazrFalcon @ 27.9.2010, 20:44) *
Краткое HOW TO пожалуйста.
Минимальный пример
Код библиотеки
testlib.h
#ifndef TESTLIB_H
#define TESTLIB_H

#include "test_global.h"
#include <QtCore/QString>

class SHARED_LIB_EXPORT TestLib {
public:
    TestLib();

    QString toUpper(const QString& str);
    QString toLower(const QString& str);
};

#endif // TESTLIB_H
testlib.cpp
#include "testlib.h"

TestLib::TestLib()
{
}

QString TestLib::toUpper(const QString& str)
{
    return str.toUpper();
}

QString TestLib::toLower(const QString& str)
{
    return str.toLower();
}
testlib_global.h
#ifndef TEST_GLOBAL_H
#define TEST_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(TEST_LIBRARY)
#  define SHARED_LIB_EXPORT Q_DECL_EXPORT
#else
#  define SHARED_LIB_EXPORT Q_DECL_IMPORT
#endif

#endif // TEST_GLOBAL_H
testlib.pro
QT       -= gui

TARGET   = test
TEMPLATE = lib

DEFINES += TEST_LIBRARY

SOURCES += testlib.cpp
HEADERS += testlib.h\
        test_global.h


Использование в проекте. Т.е. один из вариантов использования
main.cpp
#include <QtCore/QCoreApplication>
#include "../testlib/testlib.h"

#include <QtDebug>

int main()
{
    TestLib lib;
    qDebug() << lib.toUpper("test");
    qDebug() << lib.toLower("TesT");
    return 0;
}
usage_lib.pro
QT       += core
QT       -= gui

TEMPLATE = app
TARGET   = usage_lib
CONFIG  += console

LIBS += -L../testlib-build-desktop -ltest

SOURCES += main.cpp

Подробности в assistent'e
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.9.2010, 10:38
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


вот тема с примером
вот ещё
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 28.9.2010, 15:21
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


igor_bogomolov
разобрался в принципе, все работает, тока не пойму что именно оно делает, просто посылает текст либе а она его возвращает обратно =/
но основы понял будем разбираться
Litkevich Yuriy
посмотрю исходники, но еще пока слишком специфично для меня

Вопрос еще один:
как сделать такой вот пример?!
testprog -in "~/in" -out "~/out"
оба текстовики
нужно вписать путь к исходному, бинарник передаст его либе, та обработает ну и сохранить туда куда нужно
из всего выше написанного я не понимаю только как получить аргументы из командной строки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.9.2010, 15:35
Сообщение #9


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(RazrFalcon)
из всего выше написанного я не понимаю только как получить аргументы из командной строки.
Аргументы командной строки передаются как параметры функции main

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
}


argc - количество переданных параметров
argv - указатель на массив параметров, что ты передал программе

В Qt для более удобной работы с аргументами командной строки есть функция
Цитата
QStringList QCoreApplication::arguments () [static]



P.S. Погугли на тему "параметры командной строки", что бы разобраться. Вот, например, одна из ссылок http://programmersclub.ru/36/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.9.2010, 16:18
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(RazrFalcon @ 28.9.2010, 19:21) *
как сделать такой вот пример?!
testprog -in "~/in" -out "~/out"
оба текстовики
ты что-то темы путаешь. Эта тема называется "Создание и использование динамических библиотек" при чём здесь аргументы командной строки?

igor_bogomolov, не поддерживай кашу. Одна проблема - одна тема. Это правило многих форумов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.9.2010, 16:38
Сообщение #11


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата
igor_bogomolov, не поддерживай кашу. Одна проблема - одна тема. Это правило многих форумов.
Каша получается когда одну вменяемую тему дробят на мелкие, мало интересные темы. Дайте человеку сначала разобраться со своими проблемами

У меня приоритет - сначала помочь человеку, а потом уже разберемся, если вдруг тема создана не там
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 28.9.2010, 17:20
Сообщение #12


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


igor_bogomolov
огромное спасибо, разобрался с либами, только что переписал полностью одну прогу
все само встало на свои места
вопросы правда остались еще:
LIBS += -L/home/razrfalcon/uselib-build-desktop -ltest
мне приходится кидать либы в папку с бинарником, если эту строку стереть то вообще не пашит, а если сделать так:

LIBS += -L../untitled2-build-desktop -ltest
то есть путь к папке в которую компилились либы то выдает ошибку что не может найти libtest.so.1 =/
и почему их создается 4-е?! libtest.so.1.0.0 основная и еще три указателя на нее libtest.so libtest.so.1 libtest.so.1.0
почему мы пишем -ltest, хотя либа называется libtest.so.1.0.0? и почему бинарник обращается именно к libtest.so.1?

и второе, не запускается с терминала. если просто сбросить бинраник, то жалуется на отсутствие либы, а если сделать
cd путь_к_папке_с_бинарником_и_либами
libtest
то пишет что такого файла нет в папке =/
но он же есть!
Раскрывающийся текст
razrfalcon@razrfalcon-laptop:~$ cd '/home/razrfalcon/uselib-build-desktop'
razrfalcon@razrfalcon-laptop:~/uselib-build-desktop$ libtest
The program 'libtest' is currently not installed. You can install it by typing:
sudo apt-get install libnxcl-bin

в креаторе все нормально работает

Litkevich Yuriy
извиняюсь за оффтоп, но это действительно близко, я ж не про передачу файлов через инет начал спрашивать, это б было действительно глупо

Сообщение отредактировал RazrFalcon - 28.9.2010, 17:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.9.2010, 22:24
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(igor_bogomolov @ 28.9.2010, 20:38) *
мало интересные темы.
тема про аргументы командной строки вполне себе самодостаточная.

Цитата(igor_bogomolov @ 28.9.2010, 20:38) *
У меня приоритет - сначала помочь человеку
у меня приоритет - помочь человеку, который будет искать по форуму. А выискивать среди кучи страниц в одной теме, решение совсем другой задачи - очень проблематично.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.9.2010, 23:23
Сообщение #14


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(Litkevich Yuriy @ 28.9.2010, 23:24) *
тема про аргументы командной строки вполне себе самодостаточная
Нужно учитывать интересы автора. У него своя проблема, более общая, и он хочет получить ответы на свои вопросы. Тема не должна была быть разделена изначально, и автор нас об этом просил. А мы (модераторы), мало того ,что не учли интересы реального пользователя, так еще и зафлудили его темы всякой хернёй по поводу того как пользоваться поиском и как модерировать

Цитата(Litkevich Yuriy @ 28.9.2010, 23:24) *
у меня приоритет - помочь человеку, который будет искать по форуму. А выискивать среди кучи страниц в одной теме, решение совсем другой задачи - очень проблематично.
Для этого сначала нужно сделать нормальный поисковик. С существующим, как темы не разделяй и как разумно не называй, найти ничего не возможно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 29.9.2010, 13:55
Сообщение #15


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Я дико извиняюсь за то что вызвал сей спор, но я к сожалению так и не нашел ответы на выше написанные вопросы =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 29.9.2010, 14:32
Сообщение #16


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

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




Репутация:   11  


Цитата(RazrFalcon @ 29.9.2010, 14:55) *
Я дико извиняюсь за то что вызвал сей спор, но я к сожалению так и не нашел ответы на выше написанные вопросы =)

Почитай про разделяемые библиотеки в linux http://ftp.linux.kiev.ua/pub/docs/developer/_misc_/aaa.html. В этой статье как раз ответы на твои вопросы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 13:46
Сообщение #17


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


LIBS += -llibtest
почему он не видит либу которую я скинул к бинарнику!

LIBS += -L../libcreator-build-desktop -ltest
так тоже не пашит, при условии что это папка в которую компилилась либа

/media/data/Additional/libuse-build-desktop/libtest: error while loading shared libraries: libtest.so.1: cannot open shared object file: No such file or directory

Как сделать чтоб при компиляции либы не выдавался запрос "укажите где бинарник, он не был найден"

Сообщение отредактировал RazrFalcon - 4.10.2010, 13:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 4.10.2010, 14:18
Сообщение #18


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

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




Репутация:   7  


Цитата
почему он не видит либу которую я скинул к бинарнику!

RazrFalcon, вы вообще, читали ли инфу по тем ссылкам что вам дали?

Цитата
Как сделать чтоб при компиляции либы не выдавался запрос "укажите где бинарник, он не был найден"

киньте ее в /usr/lib и будет счастье
или см. тут: http://www.prog.org.ru/index.php?topic=15105.msg99973#new

что еще не ясно?

Сообщение отредактировал kuzulis - 4.10.2010, 14:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 14:25
Сообщение #19


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Цитата(kuzulis @ 4.10.2010, 14:18) *
Цитата
почему он не видит либу которую я скинул к бинарнику!

RazrFalcon, вы вообще, читали ли инфу по тем ссылкам что вам дали?

ДА!
Пока был в /home все было нормально, а теперь перенес на другой раздел и начались эти проблемы, он не видит либу, при условии что я ее уже везде где можно покопировал.

Цитата(kuzulis @ 4.10.2010, 14:18) *
Цитата
Как сделать чтоб при компиляции либы не выдавался запрос "укажите где бинарник, он не был найден"

киньте ее в /usr/lib и будет счастье
или см. тут: http://www.prog.org.ru/index.php?topic=15105.msg99973#new

я имел ввиду при компиляции либы, написал я либу, скомпилил, а креатор говорит что невозможно запустить, понятно нельзя, это ж либы, и просит путь к бинарнику, раздражает все время закрывать окошко это

Сообщение отредактировал RazrFalcon - 4.10.2010, 14:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 5.10.2010, 23:19
Сообщение #20


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

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




Репутация:   11  


RazrFalcon, есть еще вариант как сделать GUI/CLI программу. Вынеси общий код в отдельные файлы, и подключи их в оба приложения. Если общего кода не много, и он используется только твоими программами, то выигрыша от библиотеки будет не много или даже не будет совсем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.10.2010, 23:36
Сообщение #21


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Sokoloff
Да вариант разумный, просто хотелось научится с либами работать. Потом по обстоятельства буду уже решать, какой вариант лучше, когда допишу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 30.5.2025, 18:34