Избегайте копирования сторонних DLL в папку отладки - PullRequest
6 голосов
/ 26 января 2010

У меня есть приложение C ++, которое встроено в Visual Studio (2008) и ссылки на Boost DLL. При отладке кажется, что мне нужно скопировать Boost DLL в папку отладки, чтобы exe-файл, который я запускаю в IDE, мог на него ссылаться. Я мог бы использовать шаг после сборки, чтобы скопировать DLL, но мне было интересно, есть ли параметр в Visual Studio, который может дать ему дополнительный путь поиска для DLL при отладке?

Ответы [ 3 ]

4 голосов
/ 26 января 2010

Здесь есть небольшое неправильное восприятие. Visual Studio сама по себе не контролирует загрузку DLL в приложение во время отладки. Загрузка DLL напрямую контролируется операционной системой. Операционная система ищет набор интересных каталогов для DLL, когда запрашивается загрузка.

Основным способом влияния VS на загружаемую DLL-библиотеку является копирование их в выходной каталог сборки. Обычно это каталог, в котором запускается приложение, и, следовательно, это один из путей, по которым ОС будет искать необходимые библиотеки DLL.

Какие каталоги ищет ОС, управляется несколькими элементами. Самый простой из них - это переменная окружения (я считаю, что LIBPATH). В режиме отладки вы можете изменить эту переменную среды так, чтобы она указывала на ваш другой каталог и оттуда загружалась DLL.

Однако в Visual Studio ничего нельзя установить напрямую.

1 голос
/ 15 декабря 2013

Вы можете расширить PATH в Visual Studio, установив переменную среды. Здесь есть хорошее объяснение: Как мне установить путь в visual studio?

1 голос
/ 26 января 2010

В Windows не так много опций для DLL, которые неявно связаны с EXE-файлом. Кроме хранения DLL в той же папке, что и EXE, вы можете хранить ее в каталоге, который указан в переменной среды PATH. Только c: \ windows \ system32 гарантированно будет в списке, вы не можете разумно использовать эту папку. Установщик, который изменяет системную среду, будет работать, но все же не разумно.

Единственный реальный вариант - хранить DLL в параллельном кэше WinSxS. Вам нужно написать манифест, чтобы Windows могла найти DLL. И вам нужно написать установщик, чтобы поместить DLL в WinSxS. Учитывая качество документации, вам нужно действительно, действительно хотеть это сделать.

Если это всего лишь соображение для отладки, то, возможно, на самом деле не так уж и сложно изменить PATH на вашем компьютере разработчика. Используйте Панель управления, Системный апплет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...