Я пишу DLL для включения другого (третья сторона) приложение. DLL должен будет зависеть от другого набора DLLs (по причинам лицензии, которые я не могу связать статически).
Я хотел бы, чтобы мой DLL был "развертываем на xcopy" на любом каталоге. Я также хотел бы не потребовать добавления этого каталога к пути.
Если я просто создам DLL обычный путь, то Windows откажется загружать DLL, так как он не может найти DLLs рядом с текущим процессом.
Есть ли какие-либо хорошие варианты для помощи Windows определить местоположение DLL?
Отвечать на некоторые вопросы:
GetModuleFileName
.LoadLibrary
и GetProcAddress
конечно, работал бы, но не действительно выполним в моем случае. Я использую сотни, если не тысячи, методов в другом DLLs. Я действительно должен использовать библиотеки импорта.Я думал об использовании загруженного задержкой dlls, объединенного с SetDllDirectory
в DllMain. Кто-либо попробовал что-нибудь как это?
Я могу придумать 3 способа.
LoadLibrary()
и GetProcAddress()
Но если dll не находится в той же папке, что и .exe, как вы узнаете, где она? Забудьте о том, что Windows не знает, как вы узнаете?
.вы можете указать путь к dll в качестве параметра LoadLibrary ().