Как установить путь к файлу DLL в Visual Studio?
Я разработал приложение, которое зависит от файла DLL. Когда я отлаживаю свое приложение, оно будет жаловаться на то, что:
"Не удалось запустить данное приложение, так как не найден файл xxx.dll."
Поэтому я должен скопировать файл DLL в тот же каталог, что и мой файл.vcproj.
Есть ли способ настроить проект для поиска DLL-файла по (предпочтительно) некоторому относительному пути или (не предпочтительно) некоторому абсолютному пути?
Концепция похожа на то, как мы устанавливаем include и путь к библиотеке в настройках проекта.
Я имею в виду, когда я отлаживаю свое приложение (нажимая F5), вышеупомянутая ошибка всплывала.
7 ответов
- Перейти к свойствам проекта (Alt+F7)
- Под отладкой посмотрите направо
- Там есть поле Environment.
- Добавьте туда свой относительный путь (относительно папки vcproj), то есть..\some-framework\lib, добавив
PATH=%PATH%;$(ProjectDir)\some-framework\lib
или готовясь к путиPATH=C:\some-framework\lib;%PATH%
- Нажмите F5 (отладка) еще раз, и он должен работать.
Просмотрите свойства проекта -> Ссылки на пути
Затем добавьте папку с DLL
Путь поиска, который используется загрузчиком при вызове LoadLibrary(), можно изменить с помощью функции SetDllDirectory(). Таким образом, вы можете просто вызвать это и добавить путь к вашей зависимости, прежде чем загружать ее.
Смотрите также Порядок поиска DLL.
В свойствах вашего проекта (щелкните правой кнопкой мыши проект, нажмите кнопку свойства) ▶ Свойства конфигурации ▶ События сборки ▶ События после сборки ▶ Командная строка.
Отредактируйте и добавьте одну инструкцию в командную строку. например, скопируйте botan.dll из исходного пути в место, где выполняется программа.
copy /Y "$(SolutionDir)ProjectDirs\x64\Botan\lib\botan.dll" "$(TargetDir)"
Другой возможностью было бы установить Working Directory
под параметрами отладки, чтобы быть каталогом, который имеет эту DLL.
Изменить: я собирался упомянуть использование командного файла для запуска Visual Studio (и установить переменную PATH в командном файле). Тогда я немного поискал и увидел, что этот же вопрос был задан не так давно в этом посте. В ответе предлагается опция пакетного файла, а также настройки проекта, которые, по-видимому, могут выполнять эту работу (я не тестировал ее).
У меня была такая же проблема, и моя проблема не имела ничего общего с путями. Одна из моих dll-ок была написана на c++ и получается, что если ваша визуальная студия не умеет открывать dll-файл, то она скажет, что не нашла его. Что я сделал, так это обнаружил, какую dll он не нашел, затем искал эту dll в моих каталогах и открывал ее в отдельном окне визуальной студии. При попытке перейти через обозреватель решений этого проекта Visual Studio сказала, что не может показать, что находится внутри, и что мне нужны дополнительные расширения, чтобы он мог открывать эти файлы. Конечно же, после установки рекомендуемого расширения (в моем случае это связано с C++)
«Не удалось запустить данное приложение, так как не найден файл xxx.dll».
ошибка чудесным образом исчезла.
Я знаю, что на этот вопрос был дан ответ несколько лет назад, но для таких, как я, которым нужно было изменить место, где отладчик запускает приложение, измените свойство команды в Project Properties -> Debugging.