Как установить путь к файлу DLL в Visual Studio?

Я разработал приложение, которое зависит от файла DLL. Когда я отлаживаю свое приложение, оно будет жаловаться на то, что:

"Не удалось запустить данное приложение, так как не найден файл xxx.dll."

Поэтому я должен скопировать файл DLL в тот же каталог, что и мой файл.vcproj.

Есть ли способ настроить проект для поиска DLL-файла по (предпочтительно) некоторому относительному пути или (не предпочтительно) некоторому абсолютному пути?

Концепция похожа на то, как мы устанавливаем include и путь к библиотеке в настройках проекта.

Я имею в виду, когда я отлаживаю свое приложение (нажимая F5), вышеупомянутая ошибка всплывала.

7 ответов

Решение
  1. Перейти к свойствам проекта (Alt+F7)
  2. Под отладкой посмотрите направо
  3. Там есть поле Environment.
  4. Добавьте туда свой относительный путь (относительно папки vcproj), то есть..\some-framework\lib, добавив PATH=%PATH%;$(ProjectDir)\some-framework\lib или готовясь к пути PATH=C:\some-framework\lib;%PATH%
  5. Нажмите 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.

Другие вопросы по тегам