![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Пишу программу с поддержкой плагинов (exe + Dll's)
Как сделать следующее: В exe у меня есть основной класс, который является главным классом всего приложения. Возможноли в dll передать указатель на этот класс, но при этом, чтобы в dll не содержалось самой реализации этого класса. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Да чего нельзя-то. Только все public-функции класса нужно будет экспортировать, чтобы они были доступны в DLL. И, конечно, хедер класса нужно подключать к DLL, чтобы компилятор видел его структуру.
С точки зрения плагинов, правильнее определить класс-интерфейс (с чистыми виртуальными функциями), а в DLL сделать реализацию это интерфейса. После этого потребуется только экспорт функции-фабрики, которая будет возвращать указатель на интерфейс. -------------------- ... |
|||
|
||||
| Artemon |
|
||||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Не понял, каким образом можно экспортировать методы из exe ?
Я наоброт не хочу реализацию делать в DLL, т.к. она уже сть в exe и должна вызываться оттуда. Грубо говоря в exe движок, а dll вызывает методы этого движка. Это сообщение отредактировал(а) Artemon - 3.6.2009, 09:35 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
||||
|
|||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
В принципе разнице нет, где находится реализация в ехе или cpp. Суть в этих частях цитаты :
или принимать этот указатель. Это сообщение отредактировал(а) mes - 3.6.2009, 09:50 |
||||||
|
|||||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
если попроще, то в DLL должна быть экспортирована функция, что принимает указатель на интерфейс IMain и с ним работает, как тебе нужно
а EXE загружает DLL и вызывает эту функцию, передавая ей указатель на свой класс - реализацию IMain |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Всем спасибо, решил проблему, добавив абстрактный класс, у казатель на который передается в DLL.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |