Подобие компонента - сервера.
От: Keeper_andrew Беларусь  
Дата: 21.02.03 19:01
Оценка:
Доброго всем времени суток.

Перед мной встала задача совместного использования одного объекта, заложенного в dll-ку...

То есть запускается приложение — вызывает функцию из dll-ки, она возвращает указатель на объект(или интерфейс). Если объект был уже создан возвращается указатель на существующий объект.

С этой задачей я почти справился. Так как еще не решил проблему с разрушением объекта при выгрузке dll из памяти.

Буду рад вашей помощи. Спасибо.
... << RSDN@Home 1.0 beta 6a >>
Re: Подобие компонента - сервера.
От: Michael Chelnokov Украина  
Дата: 22.02.03 13:58
Оценка:
Здравствуйте, Keeper_andrew, Вы писали:

KA>Перед мной встала задача совместного использования одного объекта, заложенного в dll-ку...


KA>То есть запускается приложение — вызывает функцию из dll-ки, она возвращает указатель на объект(или интерфейс). Если объект был уже создан возвращается указатель на существующий объект.


KA>С этой задачей я почти справился. Так как еще не решил проблему с разрушением объекта при выгрузке dll из памяти.


А в чем проблема-то?
Тебе требуется, чтобы приложение узнало о том, что объект более недоступен (из-за выгрузки dll)?.. Ну, используй какой-нить callback.

А вообще-то это всё ооочень криво продумано. Убивать dll с работающим сервером объекта — это подход, мягко говоря, неправильный.
Re[2]: Подобие компонента - сервера.
От: Keeper_andrew Беларусь  
Дата: 23.02.03 01:01
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, Keeper_andrew, Вы писали:


KA>>Перед мной встала задача совместного использования одного объекта, заложенного в dll-ку...


KA>>То есть запускается приложение — вызывает функцию из dll-ки, она возвращает указатель на объект(или интерфейс). Если объект был уже создан возвращается указатель на существующий объект.


KA>>С этой задачей я почти справился. Так как еще не решил проблему с разрушением объекта при выгрузке dll из памяти.


MC>А в чем проблема-то?

MC>Тебе требуется, чтобы приложение узнало о том, что объект более недоступен (из-за выгрузки dll)?.. Ну, используй какой-нить callback.

Наверное я неправильно выразился. Приложение по идее само должно вызвать функцию dll-ки, которая разрушит объект. Так оно и планируется сделать. Но на всякий случай хотелось бы отловить внутри dll-ки событие перед ее выгрузкой, на которое вызвать разрушение объекта. в делфи я помню что есть специальная секция для этого, но там она срабатывала не всегда, и пишу я на VC7.

MC>А вообще-то это всё ооочень криво продумано. Убивать dll с работающим сервером объекта — это подход, мягко говоря, неправильный.


Возможно ты и прав, я думал над этим. Но к сожалению ничего лучшего придумать не могу (наверное старею ).
... << RSDN@Home 1.0 beta 6a >>
Re[2]: Подобие компонента - сервера.
От: Keeper_andrew Беларусь  
Дата: 23.02.03 01:02
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, Keeper_andrew, Вы писали:


KA>>Перед мной встала задача совместного использования одного объекта, заложенного в dll-ку...


KA>>То есть запускается приложение — вызывает функцию из dll-ки, она возвращает указатель на объект(или интерфейс). Если объект был уже создан возвращается указатель на существующий объект.


KA>>С этой задачей я почти справился. Так как еще не решил проблему с разрушением объекта при выгрузке dll из памяти.


MC>А в чем проблема-то?

MC>Тебе требуется, чтобы приложение узнало о том, что объект более недоступен (из-за выгрузки dll)?.. Ну, используй какой-нить callback.

Наверное я неправильно выразился. Приложение по идее само должно вызвать функцию dll-ки, которая разрушит объект. Так оно и планируется сделать. Но на всякий случай хотелось бы отловить внутри dll-ки событие перед ее выгрузкой, на которое вызвать разрушение объекта. в делфи я помню что есть специальная секция для этого, но там она срабатывала не всегда, и пишу я на VC7.

MC>А вообще-то это всё ооочень криво продумано. Убивать dll с работающим сервером объекта — это подход, мягко говоря, неправильный.


Возможно ты и прав, я думал над этим. Но к сожалению ничего лучшего придумать не могу (наверное старею ).
... << RSDN@Home 1.0 beta 6a >>
Re[3]: Подобие компонента - сервера.
От: Michael Chelnokov Украина  
Дата: 24.02.03 16:42
Оценка:
Здравствуйте, Keeper_andrew, Вы писали:

KA>Наверное я неправильно выразился. Приложение по идее само должно вызвать функцию dll-ки, которая разрушит объект. Так оно и планируется сделать. Но на всякий случай хотелось бы отловить внутри dll-ки событие перед ее выгрузкой, на которое вызвать разрушение объекта. в делфи я помню что есть специальная секция для этого, но там она срабатывала не всегда, и пишу я на VC7.


При корректной выгрузке dll винда вызывает ее DllMain с fdwReason установленным в DLL_PROCESS_DETACH.
Re[3]: Подобие компонента - сервера.
От: Michael Chelnokov Украина  
Дата: 24.02.03 16:45
Оценка:
Здравствуйте, Keeper_andrew, Вы писали:

MC>>А вообще-то это всё ооочень криво продумано. Убивать dll с работающим сервером объекта — это подход, мягко говоря, неправильный.

KA>Возможно ты и прав, я думал над этим. Но к сожалению ничего лучшего придумать не могу (наверное старею ).

Кстати, сочетание слов "DLL" и "объект" навевает мысль о COM и inproc-серверах объектов. Подумай над этим. Зачем изобретать велосипед, когда можно воспользоваться готовыми решениями?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.