![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
Подскажите, как вызвать из дл-ки функцию, определённую в программе, которая эту дл-ку подгружает?
Добавлено через 7 минут и 27 секунд Немного уточню: есть ли возможность определить свою функцию в глобальном пространстве имён, чтобы из дл-ок к ней можно было обращаться вроде ::MyNewFunction() ? |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
Только если у exe эта функция экспортируется, а dll получает указатель на нее через GetProcAddress
Либо если exe както передает в dll указатель на функцию |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
А как передать указатель из exe-шника в дл-ку? Он должен быть указателем на что? В exe-шнике это this, а к чему его приводить в дл-ке?
|
|||
|
||||
| korbian |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
Тип функции
можно представить как
таким образом можно передать в dll Tfunc*. ИМХО должно сработать или я что то не так понял(не судите строго). -------------------- korbian © |
||||
|
|||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
От ить! Про указатели на функции я и забыл! Вот что значит УТРО ПЕЛЬНИКА - самое страшное утро!
|
|||
|
||||
| Pulse69 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 28.4.2006 Где: Хабаровск Репутация: 8 Всего: 10 |
Если Вы пишете на C++, а нужных функций в исполняемом модуле много,
возможно, лучше воспользоваться таким методом: Создать интерфейсный класс с чисто виртуальными методами. Его описание поместить в EXE и в DLL.
В исполняемом модуле создать наследника от этого класса и перегрузить все методы.
Теперь если в EXE сделать IEXEmodule *pModule= new EXEmodule(); и передать pModule в DLL, с помощью этого указателя можно использовать все функции, предоставляемые исполняемым модулем. --------------------
Ctrl+Alt+Reset |
||||
|
|||||
| EnergoHokum |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
Не, в exe-шнике у меня одна функция, к которой нужно достучаться из дл-ок. А добрался я до неё по аналогии: в exe-шнике объявил её как
А в дл-ке импортирую её с помощью
В общем считаю, проблему успешно заборол. Спасибо за участие! |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |