Демультиплексирование однопоточной DLL

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
Ильгиз
Пользователь
Сообщения: 55
Зарегистрирован: 13 сен 2005, 12:00
Откуда: Уфа - Китченер

Демультиплексирование однопоточной DLL

Сообщение Ильгиз »

Скажите, как загрузить в память несколько копий однопоточной (non-thread-safe) DLL? Я хочу выполнять её функции над разными входными данными, да так, чтобы статические и динамические данные одной копии DLL отличались от данных другой копии.

(Я смог бы определять нужную копию по параметру входных данных).

Всё, что я смог предположить после краткого обзора интернета, включая "Captain COM", это возможность написания COM DLL server с несколькими apartments. Нет ли готового открытого образца для задачи моего типа?
Boo
Пользователь
Сообщения: 92
Зарегистрирован: 20 фев 2003, 00:41

Re: Демультиплексирование однопоточной DLL

Сообщение Boo »

Как вариант, можно создавать копию DLL под другим именем для каждой загрузки. В качестве вариции на эту тему можно использовать комбинации длинных и коротких имен файлов. Например если сказать LoadLibrary( "C:\\Program Files\\my application\\my dll.dll") и LoadLibrary( "C:\\Progr~1\\myapp~1\\mydll~1.dll"), то получишь две загруженные копии одной и той же DLL. Но с последним надо быть очень осторожным, напр коротокого имени может не быть и т.д.... Еще один способ избежать физического копирования это создавать хард линки на исходную DLL.
Ответить