Як встановити шлях до файлу DLL у Visual Studio?


130

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

"Не вдалося запустити цю програму, оскільки не знайдено xxx.dll."

Тому я повинен скопіювати файл DLL в ту саму директорію, що і мій файл .vcproj.

Чи є спосіб встановити проект на пошук файлу DLL в (бажано) якомусь відносному шляху або (не бажаному) якомусь абсолютному шляху?

Подібна концепція, як ми встановлюємо, включаємо і шлях до бібліотеки в налаштуваннях проекту.

Я маю на увазі, коли я налагоджую свою програму (потрапляючи F5), вищезгадана помилка з'явиться.

Відповіді:


196
  1. Перейти до властивостей проекту (Alt + F7)
  2. У розділі Налагодження подивіться праворуч
  3. Там є середовище.
  4. Додайте туди свій відносний шлях (відносно папки vcproj), тобто .. \ some-Framework \ lib, додавши PATH=%PATH%;$(ProjectDir)\some-framework\libабо додавши до шляхуPATH=C:\some-framework\lib;%PATH%
  5. Натисніть F5 (налагодження) ще раз, і це повинно працювати.

15
Поле "Середовище" займає значення NAME = VALUE пар з комою з комою. Додайте до змінної PATH, щоб мати налагоджувач VS для пошуку додаткових місць для DLL: PATH =% PATH%; lib $ (ProjectDir)
Brent Faust

1
Чи є подібний спосіб зробити і для створення версій?
Нарек

Мені потрібно було додати шлях dll до змінної $ (LibraryPath) (або включити її до списку в розділі Бібліотечні каталоги в налаштуваннях Config Properties-> VC ++ Directories).
Фостер Boondoggle

1
@ SlippD.Thompson Так, ти маєш рацію. Але ви можете досягти того ж, скориставшись Alt + p, p.
Дженікс

1
@ SlippD.Thompson Ах, читаючи ваш коментар ще раз, я думаю, що я неправильно зрозумів, що ви мали на увазі. Так, я згоден. Але, принаймні, є кілька гарячих клавіш, які ніколи не змінювалися у Visual Studio, і "Alt + p, p" - одна з них. Це було там разом із "Alt + F7", що означає щось інше, як ви знаєте. Також "Alt + p, p" просто означає "Меню проекту> * Властивості".
Дженікс

7

Шлях пошуку, який завантажувач використовує під час виклику LoadLibrary (), можна змінити за допомогою функції SetDllDirectory () . Таким чином, ви можете просто зателефонувати цьому і додати шлях до своєї залежності, перш ніж завантажувати його.

Див. Також Замовлення на пошук DLL .


7

Перегляньте властивості проекту -> Довідкові шляхи

Потім додайте папку з DLL


4
Не публікуйте однакових відповідей на кілька запитань. Опублікуйте одну хорошу відповідь, а потім проголосуйте / позначте, щоб закрити інші питання як дублікати. Якщо питання не є дублікатом, підготуйте свої відповіді на питання.
durron597

1
на сьогодні найкраща відповідь :)
Rathma

2
Здається, це не є доступним у Visual Studio 2015 у проекті C ++. Яке поєднання версії Visual Studio та типу проекту підтримує цю опцію?
Філіп Бартек

Питання ОП стосувалося C ++, але ця відповідь стосується C #.
Дженікс

Не працювали для мене з C # та VS2017
mherzog

4

Іншою можливістю було б встановити Working Directoryпід параметрами налагодження те каталог, який містить цю DLL.

Редагувати: я збирався згадати використання пакетного файлу для запуску Visual Studio (і встановити змінну PATH у пакетному файлі). Тоді трохи пошукав і побачив, що це саме те питання було задано не так давно в цій публікації . Відповідь пропонує параметр пакетного файлу, а також параметри проекту, які, мабуть, можуть зробити цю роботу (я не перевіряв його).


Що робити, якщо я залежу від 2 dll, кожен живе у власному каталозі? (я спростив своє запитання вище)
sivabudh

Я не думаю, що це рішення дозволить працювати більш ніж для одного каталогу.
Марк Вілкінс

3

У своїх властивостях проекту (клацніть правою кнопкою миші на проект, натисніть кнопку властивості) ▶ Властивості конфігурації ▶ Події побудови ▶ Опублікувати події побудови ▶ Командний рядок.

Відредагуйте та додайте одну команду до командного рядка. наприклад, скопіюйте botan.dll з вихідного шляху до місця, де виконується програма.

copy /Y "$(SolutionDir)ProjectDirs\x64\Botan\lib\botan.dll" "$(TargetDir)"

Властивості проекту


Я не маю уявлення, чи правильно це робити, але IDE дає мені цей варіант, і він був корисним, я думаю, що це хороший варіант, якщо я хочу скопіювати всі необхідні файли в іншу папку для розповсюдження вашої програми. Просте заклинання, але ефективне. Тут у цьому запитанні є різні відповіді, щоб досягти одного і того ж результату. Але я використовую цей варіант і уникаю багатьох головних болів.
Joma

Інші варіанти для мене не спрацювали, лише цей, але, схоже, інші повинні бути правильним шляхом.
rjferguson

-1

Я знаю, що на це питання відповіли багато років тому, але для таких, як я, яким потрібно було змінити те, де налагоджувач запускає додаток, змінити властивість команди в розділі Властивості проекту -> Налагодження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.