Я пытаюсь загрузить несколько экземпляров одной и той же DLL в проекте VS2010 C ++ (конфигурация x32).
, поэтому у меня есть основной dll - Parent.dll, который объединяется с некоторыми другими kids.dll (kid1. dll, kid2.dll, et c ..., kid8.dll) stati c -linked - когда я загружаю Parent.dll, автоматически загружаются файлы kids.dll (они расположены по одному пути, поэтому они могут загружаться успешно).
в моем коде я использую LoadLibraryEx (Path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH) для загрузки экземпляров Parent.dll. моя проблема возникает, когда я пытаюсь создать несколько экземпляров Parent.dll: я делаю копию всех библиотек DLL в другой путь, переименовываемый в имя родительского (например, Parnet_1.dll), в отношении других библиотек DLL - их нельзя переименовать потому что они связаны c. (Я не могу получить доступ к исходному коду Pa rnet .dll и изменить его на Dynami c -load).
С 1 экземпляром - Parent.dll и все его дети успешно загружаются. когда я пытаюсь загрузить другой экземпляр, Parent_1.dll, файл Parent_1.dll загружен успешно, но другие детские библиотеки DLL не загружены: они имеют точно такие же имена, которые уже загружены из 1-го экземпляра - вот что заставляет мою программу cra sh.
, что я пытаюсь сделать, это динамически загрузить несколько экземпляров Parent.dll, что каждый родительский файл будет иметь свой собственный загруженный kids.dll. другими словами - рекурсивное перенаправление
Я искал по всему inte rnet и не смог найти решение для моего случая. Я увидел там эту статью: https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-redirection и попробовал MyCode.exe.local, и он не работал.
Я также попытался перенаправить DLL с помощью манифеста, но не мог понять, как делайте это правильно.
Спасибо за любые усилия, чтобы помочь!