Страница 1 из 1

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

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

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

Всё, что я смог предположить после краткого обзора интернета, включая "Captain COM", это возможность написания COM DLL server с несколькими apartments. Нет ли готового открытого образца для задачи моего типа?

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

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