У нас есть DLL, которая создается самостоятельно, и для которой у нас есть связанная статическая LIB-заглушка.
У нас также есть EXE, который использует эту DLL, используя простой метод статического связывания с файлом LIB библиотеки DLL (т. Е. Не используя LoadLibrary вручную).
При развертывании EXE мы хотим, чтобы имя файла DLL было изменено по причинам запутывания (по запросу клиента).
Как мы можем сделать это, чтобы наш EXE-файл все еще находил DLL автоматически?
Я попытался переименовать файлы DLL и LIB (после того, как они были собраны в их обычное имя), затем изменил настройки проекта EXE, чтобы связать их с переименованной LIB. Это терпит неудачу во время выполнения, поскольку я предполагаю, что имя DLL запекается в файле LIB, а не просто угадывается компоновщиком, заменяющим «.lib» на «.dll».
В общем, мы не хотим применять эту обфускацию ко всем видам использования DLL, поэтому мы хотели бы сохранить текущие выходные файлы проекта DLL, если они есть.
Я надеюсь, что найдется метод, с помощью которого мы сможем отредактировать LIB-файл DLL и заменить жестко запрограммированное имя DLL-файла чем-то другим. В этом случае это можно сделать полностью в рамках проекта EXE (возможно, в качестве этапа предварительной сборки).
Обновление : Я считаю, что отложенная загрузка не работает, так как моя DLL содержит экспортированные классы C ++.
См. эту статью .
Есть ли альтернативы?