Название: Как создать обьект класса из DLL Отправлено: alexandros от Март 02, 2012, 15:26 Как создать обьект класса
имею dll и эти файлы classdll_global.h Код classdll.h Код
classdll.cpp Код
загружаю библиотеку через QLibrary() все прекрасно грузится - теперь нужно как то создать обьект, вызвать констрктор и функцию P.S. Обычные функции умею загружать хочу научится работать с классом Название: Re: Как создать обьект класса из DLL Отправлено: alexandros от Март 02, 2012, 15:37 выполнил dumpbin.exe
показал что 3 функции есть
Название: Re: Как создать обьект класса из DLL Отправлено: Авварон от Март 02, 2012, 16:18 Используй QPluginLoader. Или сделай как там сделано. Лень объяснять как.
Название: Re: Как создать обьект класса из DLL Отправлено: BRE от Март 02, 2012, 16:36 P.S. Обычные функции умею загружать хочу научится работать с классом Если умеешь функции, то создай функцию, которая будет создавать объект нужного класса и возвращать на него указатель. Как бы все просто. :)Код
Название: Re: Как создать обьект класса из DLL Отправлено: alexandros от Март 02, 2012, 21:06 неполучается так
Название: Re: Как создать обьект класса из DLL Отправлено: BRE от Март 02, 2012, 21:08 неполучается так Что именно не получается?Название: Re: Как создать обьект класса из DLL Отправлено: alexandros от Март 03, 2012, 08:24 нашел вот тут
http://www.rsdn.ru/article/baseserv/dlluse.xml тупиковая ситуация Сначала задумаемся, почему объекты класса из явно подключаемой библиотеки нельзя использовать, как обычно. Дело в том, что при создании объекта класса компилятор генерирует вызов его конструктора. Но линкер не может разрешить этот вызов, поскольку адрес конструктора будет известен только в процессе выполнения программы. В результате сборка программы закончится неудачно. Такая же проблема возникает при вызове невиртуальных методов класса. С другой стороны, вызов виртуальных методов возможен, так как он осуществляется через таблицу виртуальных функций (vtable). Так, следующий фрагмент откомпилируется и слинкуется нормально (хотя, конечно, вызовет ошибку в процессе выполнения): Название: Re: Как создать обьект класса из DLL Отправлено: BRE от Март 03, 2012, 09:37 тупиковая ситуация ::) Настолько ли она тупиковая?Да, простое создание объекта класса, методы которого лежат в разделяемой библиотеке и которая загружается в процессе работы программы - невозможно. Но всегда можно воспользоваться функцией-фабрикой, которая будет их создавать. Чем, собственно, все и пользуются. Название: Re: Как создать обьект класса из DLL Отправлено: alexandros от Март 03, 2012, 16:45 Теперь я разобрался окончательно. Всем спасибо. Закрываю. :)
|