Название: Создание и использование DLL Отправлено: rain107 от Февраль 27, 2010, 20:06 Всем доброго времени суток!
Посоветуйте пожалуйста как правильно создать класс (например MyWidget) и запихнуть его в ДЛЛ... И как правильно этот класс экспортировать в рабочее приложение (желательно динамически)? С функциями проблем нет, а вот с классами - проблема. ДЛЛ создавал так: dll_test1.h Код: #ifndef DLL_TEST1_H dll_test1.cpp Код: #include "dll_test1.h" dll_test1.pro Код: TEMPLATE = lib Использовал ДЛЛ так: Код: #include <QtGui> Название: Re: Создание и использование DLL Отправлено: BRE от Февраль 27, 2010, 20:09 В assistant есть раздел:
How to Create Qt Plugins Название: Re: Создание и использование DLL Отправлено: rain107 от Февраль 27, 2010, 20:11 В assistant есть раздел: How to Create Qt Plugins Уже смотрел, не очень помогло. Там только плагины:( Название: Re: Создание и использование DLL Отправлено: BRE от Февраль 27, 2010, 20:12 А в чем разница между плагином (который в DLL) и DLL?
Название: Re: Создание и использование DLL Отправлено: rain107 от Февраль 27, 2010, 20:32 Был бы очень признателен за маленький пример. А то уже два дня сижу и ничего не могу поделать :(
Название: Re: Создание и использование DLL Отправлено: BRE от Февраль 27, 2010, 20:48 Поищи по форуму, подобных тем было несколько, пример:
http://www.prog.org.ru/topic_4120_0.html Название: Re: Создание и использование DLL Отправлено: rain107 от Февраль 27, 2010, 21:55 Да я уже смотрел по форуму перед созданием темы. Там везде идет речь либо об экспорте функций либо о плагинах...
Название: Re: Создание и использование DLL Отправлено: rain107 от Февраль 27, 2010, 22:02 А в чем разница между плагином (который в DLL) и DLL? Да наверное всетаки есть разница. Как же экспортировать класс который не является плагином, без использования множественного наследования интерфейса? Название: Re: Создание и использование DLL Отправлено: break от Февраль 27, 2010, 22:21 1) все есть в документации
2) все есть на форуме 3) Qt плагин - это механизм обертки над ПОЛНОСТЬЮ СВОИМ классом для запаковывания его в DLL чтобы потом можно было загрузить его динамически и использовать через QPluginLoader 4) вы не хотите разбираться а хотите чтобы за вас сделали это Цитировать Как же экспортировать класс который не является плагином, без использования множественного наследования интерфейса? Легко! Делаете интерфейс плаш=гина который имеет ф-ю CMyClass * makeInstance(); грузите свой плагин - через этот интерфейс создаете свой класс который не унаследован ни от каких интерфейсов - и спокойно работаете с ним. Этот способ еще и позволяет создать несколько экземпляров объектов при одном загруженном плагине (просто загружая плагин - он загрузится только 1 раз, даже если принудительно несколько раз вызывать загрузку)! Название: Re: Создание и использование DLL Отправлено: BRE от Февраль 27, 2010, 22:24 Класс это абстракция, которая есть в исходном файле и голове программиста, в объектных файлах уже никаких классов нет, есть просто функции "со странными именами".
dll.h Код
Dll.cpp Код
Собераешь как dll. А дальше, все как ты делал, загрузил dll, получил указатель на функцию buildClass. С ее помощью создаются объекты. Интерфейс описан в dll.h Название: Re: Создание и использование DLL Отправлено: SASA от Март 02, 2010, 11:34 У нас есть вики!
http://www.prog.org.ru/topic_8259_0.htm (http://www.prog.org.ru/topic_8259_0.htm)l |