создать несколько копий одной dll-ки в памяти
и в a,b,c вместо LoadLibrary("d.dll") вставить соответственно LoadLibrary("d(1,2,3).dll")
![](/images/graemlins/smile.gif)
при каждом вызове dll-ки d необходимо создавать внутрии неё по одному экземпляру какого-нибудь класса. Переменные юзать внутри каждого экземпляра
это клево, но во многих длл нет никаких классов
Значит, это фиговые длл. Во всех нормальных есть что-то вроде Library* initLibrary;, если так уж не нравятся классы.
Приведи список нормальных dll. Хотя бы штучки три узнаваемых.
Еще куча, которым это просто не надо - не имеют состояния, или состояние хранит пользователь.
Лучше ты приведи пример библиотеки, обладающей вышеописанным недостатком.
Про mpi фигню сказал.
Внимание: принцип не общий. Вопрос был про dll-ки, ответ должен быть про dll-ки.
Никто тебе ничего не должен, не нравится мой пример - придумывай свой.
Я это к тому, что ты фигню сказал. dll-ки это просто набор функций. То, что предлагаешь ты, больше на COM похоже, но вопрос-то не про него.
Если этот набор функций заводит себе глобальную переменную, то становится чем-то похожим на объект. И если при этом отсутствует что-то похожее на конструктор, то использовать их - затруднительно. Особенно в больших приложениях, когда две компоненты могут независимо захотеть воспользоваться библиотекой.
Да, я теперь понял, о чем ты говоришь. Действительно, это правильный подход. Но такое не везде.
а просто дело в том, что ту dll-ку, которую надо много раз загружать, не я писал
пропатчить (исходники или бинарники) dll-ки a,b,c чтобы они грузили эту либу с разными именами.
может и другие способы есть, но это уже будет еще большим извратом..
Оставить комментарий
NataNata
есть dll-ки a,b,c, которые используют функцию из dll-ки dпрограмма одновременно загружает a,b,c с помощью loadlibrary
dll-ка d имеет внутри себя некие глобальные (в пределах d) переменные, которые нужно настроить и a, и b, и с
вопросы: как сделать так, чтобы загружалось 3 копии dll-ки d, чтобы каждая была для библиотеки, которая ее использует?