crossplatform.ru

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

> Классы в динамических библиотеках.
MishaUA
  опции профиля:
сообщение 3.4.2014, 17:48
Сообщение #1


Участник
**

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

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




Репутация:   0  


Добрый день! Настал час, когда пришлось писать динамические библиотеки.
В проге через QLibrary подключается библиотека и далее используются ее функции.
В коде самой dll содержится класс, методы которого нужно вызывать, но в отличии от статической библиотеки, в динамической методы вызывать нельзя, только функции, Я поступил следующим образом:
class MyLib
{
public:
    MyLib();

    QString Test() {return "Hello!";};
};

MyLib    lblb;    // создаем класс

extern "C" {
QString Test() {return lblb.Test();}
}

Является ли такой вариант правильным, или посоветуете что то получше?
И еще интересует, как с библиотеки можно передать сигнал в программу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 5.4.2014, 18:22
Сообщение #2


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

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

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




Репутация:   94  


class MyLib : public QObject
MishaUA, не вижу у тебя инициализации структуры w

А вообще сделай функцию, которая будет создавать экземпляр (объект), а дальше работай с ним как обычно.

class MyWidget : public QWidget
{
public:
    MyWidget (arg1, arg2, ...);

}

MyWidget* creatMyWidget(arg1, arg2, ...)
{
    return new MyWidget(arg1, arg2, ...)
}

    QLibrary    *lib = new QLibrary("d:/MyLib1.dll", this);
    qDebug() << lib->load();

    typedef QWidget* (*CreatMyWidget) ();
    CreatMyWidget    creatMyWidget = (CreatMyWidget)(lib->resolve("widget"));
    QWidget    *w = creatMyWidget();
    ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 19.4.2024, 2:40