Подтвердить что ты не робот

Есть ли эквивалент Windows/MSVC для флагов -rpath-линкера?

В Linux/GCC я могу использовать флаг -rpath для изменения пути поиска исполняемых файлов для разделяемых библиотек без закалки с переменными среды.

Можно ли это сделать и в Windows? Насколько мне известно, dll всегда ищутся в исполняемом каталоге и в PATH.

Мой сценарий: я хотел бы поместить разделяемые библиотеки в местоположения в соответствии со своими свойствами (32/64bit/Debug/Release), не заботясь о уникальных именах. В Linux это легко сделать с помощью rpath, но я еще не нашел способа сделать это в Windows.

Спасибо за любые подсказки!

4b9b3361

Ответ 1

К сожалению, нет прямого аналога RPATH. Существует ряд альтернативных возможностей, каждый из которых, скорее всего, нежелателен для вас по-своему.

Учитывая, что вам нужен другой exe для каждого стиля сборки, так или иначе, чтобы избежать столкновений библиотек во время выполнения, поскольку, как вы могли догадаться, самая простая задача - разместить каждый exe в той же папке, что и каждый набор DLL.

Как вы уже упоминали, наиболее универсальным методом является изменение переменной PATH с помощью пакетного файла для загрузки exe.

Вместо этого вы можете изменить текущий рабочий каталог перед запуском программы в нужную папку DLL.

Вы можете использовать функцию SetDllDirectory или AddDllDirectory внутри ваш exe. Вероятно, это самый близкий к RPATH, но работает только на WinXP SP1 или более поздней версии.

Если вы хотите изменить имя файла для каждого выражения exe, вы можете использовать раздел реестра "Пути приложений". Каждому exe потребуется уникальное имя файла.