Я пишу DLL для подключения к другому (стороннему) приложению. DLL должна зависеть от другого набора DLL (по причинам лицензии я не могу связать статически).
Я бы хотел, чтобы моя DLL была "xcopy-deployable" для любого каталога. Я также хотел бы не требовать добавления этого каталога в путь.
Если я просто собираю DLL обычным способом, Windows откажется загружать DLL, так как не может найти DLL рядом с текущим процессом.
Есть ли хорошие способы помочь Windows найти DLL?
Чтобы ответить на несколько вопросов:
- DLL написана на C ++.
- Дополнительные библиотеки DLL - это QT-dll.
- Я хотел бы разместить дополнительные DLL в той же папке, что и моя библиотека плагинов. Я могу получить имя этой папки из
GetModuleFileName
.
- Приложение - Firefox, DLL - модуль безопасности PKCS # 11.
- Приложение загружает DLL, используя полный путь к DLL (пользователь указывает ее при установке плагина).
- Требование размещения DLL-файлов в System32 или рядом с приложением будет работать, но это немного запутанно и может вызвать проблемы с программами удаления.
LoadLibrary
и GetProcAddress
, конечно, будут работать, но в моем случае это не реально. Я использую сотни, если не тысячи, методов в других DLL. Мне действительно нужно использовать библиотеки импорта.
Я думал об использовании загруженных с задержкой DLL в сочетании с SetDllDirectory
в DllMain. Кто-нибудь пробовал что-нибудь подобное?