Название: Как экпортировать весь класс из DLL ? Отправлено: admsasha от Июнь 01, 2011, 04:31 Как делать экспорт и загрузку функций я знаю и все хорошо работает. А как сделать экспорт всего класса и как потом с ним работать ?
Название: Re: Как экпортировать весь класс из DLL ? Отправлено: asvil от Июнь 01, 2011, 08:53 qthelp://com.trolltech.qt.470/qdoc/sharedlibrary.html
Название: Re: Как экпортировать весь класс из DLL ? Отправлено: Denjs от Июнь 01, 2011, 13:08 Как делать экспорт и загрузку функций я знаю и все хорошо работает. А как сделать экспорт всего класса и как потом с ним работать ? Стоп, стоп) давайте поймем что значит _экспортировтаь_класс_?давайте на примере и не забывайте, что С++ - компилируемый язык, а не интерпретируемый. Вы не можете описать в программе работу с классом, который не известен в момент компиляции программы. Вы можете вернуть из функции библиотеки объект. Объект который создается внутри библиотеки и возвращается по ссылке известного в момент компиляции типа. т.е. класс вашего обхекта должен наследовать один из известных программе классов-прототипов, иначе вы не сможете с ним работать. Или подробнее опишите что вы хотите? Название: Re: Как экпортировать весь класс из DLL ? Отправлено: admsasha от Июнь 01, 2011, 14:04 Например, имеется класс
class myClass { public: void foo1(); int foo2(int,int); private: int a; int b; } Вот и нужно сделать его доступным. чтобы обращаться, не как foo1(), а exportClass.foo1(); Название: Re: Как экпортировать весь класс из DLL ? Отправлено: Denjs от Июнь 01, 2011, 14:22 Вот и нужно сделать его доступным. где (давайте разъясним) "exportClass.foo1()" - это не что иное как:чтобы обращаться, не как foo1(), а exportClass.foo1(); * exportClass - это имя _объекта_, * а foo1 - имя функции класса myClass . Напишите в библиотеке функцию, которая возвращает вам ссылку на объект класса myClass и далее получите приравняйте его вашей переменной exportClass и обращайтесь к функции "foo1()" как "exportClass->foo1()" ???? нет? в чем сложность? Естественно, вы можете отдать по ссылке *myclass объект дочернего от myclass класса. и у него функция foo1() - может делать что-то своё, иное. PS:Ещё раз: вы можете получить из библиотеки объект. А "описание класса - нового неизвестного при компиляции основной программы" - нет. С++ - это компилируемый язык. Вы можете работать тольок с типами изветсными в момент компиляции. Название: Re: Как экпортировать весь класс из DLL ? Отправлено: kambala от Июнь 01, 2011, 14:59 может товарищ имеет в виду reflection?
Название: Как ИМПОРТИРОВАТЬ весь класс из DLL ? Отправлено: iks от Июнь 11, 2011, 00:49 Вот в таком духе примерно можно подключить библиотеку и работать с ней
Сброка плагина .pro Код interfaceManager.h Код getManager.h Код getManager.cpp Код Программа .pro Код main.cpp Код Правильно заданый вопрос - половина ответа. "Как экпортировать весь класс из DLL" если куда-то что-то отправляем то это экспорт, если берем то импорт, а экспорт "ИЗ" не стыкуется как-то. Я ответил на вопрос "Как ИМПОРТИРОВАТЬ весь класс из DLL", или это не совсем то о чем спрашивалось? -------------------------------------- В вложении немного другая реализация, там я проверялся как проще организовать сигнально слотовую связь, без лишних наследований и зависимостей, решение пришло после посещения форума http://developer.qt.nokia.com/forums Вполне рабочее решение получилось Название: Re: Как экпортировать весь класс из DLL ? Отправлено: andybeg от Июнь 20, 2011, 11:50 iks
дико извиняюсь, я взял тестовый проект pluginTest и при компиляции он ругнулся в несколько строк вида Код: C:\dev\pluginTest\src\plugin\Plugin.cpp:-1: ошибка: undefined reference to `_imp___ZN6QLabelC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE' Название: Re: Как экпортировать весь класс из DLL ? Отправлено: ритт от Июнь 20, 2011, 19:49 QT += gui ?
Название: Re: Как экпортировать весь класс из DLL ? Отправлено: andybeg от Июнь 20, 2011, 20:47 опачки, действительно, там вместо "+" стоял "-" спасибо
Название: Re: Как экпортировать весь класс из DLL ? Отправлено: iks от Июнь 20, 2011, 22:43 ну не знаю у меня с минусом все в норме, правда на Linux все пишу и тестирую =) а вообще можете просто удалить строку QT += gui по идее должно нормально пойти в плагине
Название: Re: Как экпортировать весь класс из DLL ? Отправлено: andybeg от Июнь 21, 2011, 00:07 да, забыл упомянуть, что под линух у мя такой ошибки не было
Название: Re: Как экпортировать весь класс из DLL ? Отправлено: iks от Июнь 23, 2011, 22:54 Обновил вложение, переписал скрипт написаный на скорую руку, добавил QT += gui в приложение, в плагине оставил с минусом, если что стоит удалить эту строку из .pro файла
|