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

Почему Visual Studio не может найти мою DLL?

В Visual Studio 2010 под VC++ Directories > Executable Directories я указал путь к glew32d.dll. Однако, когда я запускаю исполняемый файл, он все еще жалуется.

С другой стороны, если я копирую DLL в локальную папку и запускаю исполняемый файл, то он не жалуется.

Может кто-нибудь, пожалуйста, скажите мне, как это исправить? Кроме того, почему Visual Studio не распознает этот путь?

Обновление Сценарий: В настоящее время я использую шаблонный проект, который я использую в качестве стартового кода для многих своих проектов. Этот шаблон зависит от glew32d.dll. Обычно я храню все зависимые dll в общей папке bin. Я надеялся ссылаться на эту папку, и Visual Studio могла читать DLL оттуда, вместо меня мне приходилось копировать DLL каждый раз. Что было бы хорошим способом справиться с этим?

4b9b3361

Ответ 1

Указание пути к DLL файлу в настройках вашего проекта не гарантирует, что ваше приложение будет найти DLL во время выполнения. Вы только сказали Visual Studio, как найти нужные ему файлы. У этого ничего нет. делать то, как программа находит то, что ей нужно, после ее создания.

Размещение DLL файла в той же папке, что и исполняемый файл, безусловно, является самым простым решением. Это путь поиска по умолчанию для зависимостей, поэтому вам не нужно ничего делать, если вы идете по этому маршруту.
Чтобы избежать необходимости делать это вручную каждый раз, вы можете создать событие Post-Build для своего проекта, чтобы автоматически скопирует DLL в соответствующий каталог после завершения сборки.

В качестве альтернативы вы можете развернуть DLL в Windows бок о бок кеш и добавить манифест в ваше приложение, которое указывает местоположение.

Ответ 2

У меня возникла одна и та же проблема с той же самой библиотекой lib, которая находила решение здесь SO:

Поиск в MSDN для "Как установить переменные среды для проектов". (Это проект > Свойствa > Свойства конфигурации > Отладка Свойства "Окружающая среда" и "Слияние окружающей среды" для тех, кто находится в спешка.)

Синтаксис NAME = VALUE и макросы могут использоваться (например, $(OutDir)).

Например, чтобы добавить C:\Windows\Temp к PATH:

PATH=C:\WINDOWS\Temp;%PATH%

Аналогично, добавьте $(TargetDir)\DLLS в PATH:

PATH=%PATH%;$(TargetDir)\DLLS

(ответил Multicollinearity здесь: Как установить путь в visual studio?

Ответ 3

попробуйте "свойства конфигурации → отладка → среда" и установите переменную PATH во время выполнения

Ответ 4

Чтобы добавить к Олегу ответ:

Мне удалось найти DLL во время выполнения, добавив Visual Studio $(ExecutablePath) в переменную среды PATH в Configuration Properties → Debugging. Этот макрос - это то, что определено в поле Configuration Properties- > VС++ Directories- > Executable Directories *, поэтому, если у вас есть эта настройка, чтобы указать на любые DLL файлы, которые вам нужны, просто добавив это в свой PATH, вы сможете легко найти библиотеки DLL во время выполнения!

* На самом деле я не знаю, использует ли макрос $(ExecutablePath) параметр "Исполняемые каталоги проекта" или глобальные страницы "Выполняемые каталоги свойств". Поскольку у меня есть все мои библиотеки, которые я часто использую, настроенные через страницы свойств, эти каталоги отображаются как значения по умолчанию для любых новых проектов, которые я создаю.