crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Создание и использование динамических библиотек
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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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, не поддерживай кашу. Одна проблема - одна тема. Это правило многих форумов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 24.4.2024, 10:22