Название: Вопрос по динамической библиотеки Отправлено: sibmail от Май 15, 2012, 04:55 Есть dll, которая делает какие-то примитивные вещи. Например:
lib.h Код: extern "C" lib.cpp Код: #include "lib.h" Я захотел добавить в функцию F1 запуск потока (или класса). Подключил еще один .h .cpp В функции F1 прописал T myT(); Код: int F1() Все нормально. Библиотека работает, запускается поток, делает свои вещи. Теперь возникла задача, чтобы по вызову функции F2() обращаться к потоку (классу) и что-то там изменять (управлять). Как это оформить пока не понимаю... И можно ли оформить экспортируемые функции в одном базовом классе? типа Код: class BaseLib : public QObject Название: Re: Вопрос по динамической библиотеки Отправлено: alexis031182 от Май 15, 2012, 08:24 Создайте просто одну экспортируемую функцию-фабрику и базовый класс. Функция должна создавать и возвращать экземпляр базового класса. Она не может находиться внутри базового класса.
У данной функции возможны два варианта поведения: - функция при каждом вызове создаёт новый экземпляр базового класса; - функция при первом вызове создаёт экземпляр базового класса, а при последующих возвращает лишь указатель на ранее созданный объект. Название: Re: Вопрос по динамической библиотеки Отправлено: Kurles от Май 15, 2012, 08:40 И можно ли оформить экспортируемые функции в одном базовом классе? типа Можно. (http://www.prog.org.ru/topic_8259_0.html) Только нужно интерфейс класса обязательно прилагать к такой библиотеке.Код: class BaseLib : public QObject Название: Re: Вопрос по динамической библиотеки Отправлено: sibmail от Май 15, 2012, 08:49 Создайте просто одну экспортируемую функцию-фабрику и базовый класс. Функция должна создавать и возвращать экземпляр базового класса. Она не может находиться внутри базового класса. У данной функции возможны два варианта поведения: - функция при каждом вызове создаёт новый экземпляр базового класса; - функция при первом вызове создаёт экземпляр базового класса, а при последующих возвращает лишь указатель на ранее созданный объект. не понял ваше предложение... дело в том что приложение, использующее DLL уже написано, список функций известен и менять логику никто не будет. необходимо переписать уже существующую dll (сделать кроссплатформенную) Название: Re: Вопрос по динамической библиотеки Отправлено: alexis031182 от Май 15, 2012, 09:14 Ну так сделайте:
Код: class BaseLib : public QObject Название: Re: Вопрос по динамической библиотеки Отправлено: sibmail от Май 15, 2012, 11:14 Ну так сделайте: Код: class BaseLib : public QObject спасибо, помогло! надеюсь дальше работа пойдет быстрее ))) |