Bagaimana cara menetapkan jalur ke file DLL di Visual Studio?


130

Saya mengembangkan aplikasi yang tergantung pada file DLL. Ketika saya men - debug aplikasi saya, aplikasi akan mengeluh bahwa:

"Aplikasi ini gagal memulai karena xxx.dll tidak ditemukan."

Jadi saya harus menyalin file DLL ke direktori yang sama dengan file .vcproj saya.

Apakah ada cara untuk mengatur proyek untuk mencari file DLL di (lebih disukai) beberapa jalur relatif atau (tidak disukai) beberapa jalur absolut?

Konsep yang mirip dengan bagaimana kita mengatur jalur include dan librari dalam pengaturan proyek.

Maksud saya ketika saya debug aplikasi saya (memukul F5) kesalahan di atas akan muncul.

Jawaban:


196
  1. Pergi ke properti proyek (Alt + F7)
  2. Di bawah Debugging, lihat ke kanan
  3. Ada bidang Lingkungan.
  4. Tambahkan path relatif Anda di sana (relatif ke folder vcproj) yaitu .. \ some-framework \ lib dengan menambahkan PATH=%PATH%;$(ProjectDir)\some-framework\libatau menambahkan pada pathPATH=C:\some-framework\lib;%PATH%
  5. Tekan F5 (debug) lagi dan itu akan berfungsi.

15
Bidang Lingkungan mengambil NAME = VALUE pasangan tanda titik koma. Tambahkan ke variabel PATH agar VS Debugger mencari lokasi tambahan untuk DLL: PATH =% PATH%; $ (ProjectDir) lib
Brent Faust

1
Apakah ada cara serupa yang bisa dilakukan untuk rilis build juga?
Narek

Saya perlu menambahkan path dll ke variabel $ (LibraryPath) (atau memasukkannya dalam daftar di bawah Direktori Perpustakaan pada Config Properties-> pengaturan Direktori VC ++).
Foster Boondoggle

1
@ SlippD. Thompson Ya, Anda benar. Tetapi Anda dapat mencapai hal yang sama menggunakan Alt + p, p sebagai gantinya.
Jenix

1
@ SlippD. Thompson Ah, membaca komentar Anda lagi, saya pikir saya salah mengerti apa yang Anda maksud. Ya saya setuju. Tapi setidaknya, ada beberapa hotkey yang tidak pernah berubah di Visual Studio, dan 'Alt + p, p' adalah salah satunya. Itu ada di sana bersama dengan 'Alt + F7', yang berarti sekarang sesuatu yang lain seperti yang Anda tahu. Juga, 'Alt + p, p' berarti 'Menu proyek> * Properti'.
Jenix

7

Jalur pencarian yang digunakan loader ketika Anda memanggil LoadLibrary () dapat diubah dengan menggunakan fungsi SetDllDirectory () . Jadi Anda bisa memanggil ini dan menambahkan path ke dependensi Anda sebelum Anda memuatnya.

Lihat juga Urutan Pencarian DLL .


7

Pergi melalui properti proyek -> Path Referensi

Kemudian tambahkan folder dengan DLL


4
Tolong jangan posting jawaban yang identik untuk beberapa pertanyaan. Posting satu jawaban yang baik, lalu pilih / panji untuk menutup pertanyaan lain sebagai duplikat. Jika pertanyaan itu bukan duplikat, sesuaikan jawaban Anda untuk pertanyaan itu.
durron597

1
sejauh ini jawaban terbaik :)
Rathma

2
Ini sepertinya tidak tersedia di Visual Studio 2015 dalam proyek C ++. Kombinasi versi Visual Studio dan jenis proyek mana yang mendukung opsi ini?
Filip Bártek

Pertanyaan OP adalah tentang C ++ tetapi jawaban ini untuk C #.
Jenix

Tidak bekerja untuk saya dengan C # dan VS2017
mherzog

4

Kemungkinan lain adalah mengatur di Working Directorybawah opsi debug untuk menjadi direktori yang memiliki DLL itu.

Sunting: Saya akan menyebutkan menggunakan file batch untuk memulai Visual Studio (dan mengatur variabel PATH dalam file batch). Jadi kemudian melakukan sedikit pencarian dan melihat bahwa pertanyaan yang sama persis ditanyakan belum lama ini di posting ini . Jawabannya menyarankan opsi file batch serta pengaturan proyek yang tampaknya dapat melakukan pekerjaan (saya tidak mengujinya).


bagaimana jika saya bergantung pada 2 dll, masing-masing tinggal di direktori sendiri? (Saya menyederhanakan pertanyaan saya di atas)
sivabudh

Saya tidak berpikir itu akan memungkinkan untuk membuat solusi ini berfungsi lebih dari satu direktori.
Mark Wilkins

3

Di properti Proyek Anda (Klik kanan pada proyek, klik tombol properti) ▶ Properti Konfigurasi ▶ Bangun Acara ▶ Posting Bangun Acara Build Baris Perintah.

Edit dan tambahkan satu instruksi ke baris perintah. misalnya salin botan.dll dari jalur sumber ke lokasi di mana sedang dieksekusi program.

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

Properti Proyek


Saya tidak tahu apakah itu benar untuk dilakukan, tetapi IDE memberi saya pilihan itu dan itu telah berguna, saya pikir itu pilihan yang baik jika saya ingin menyalin semua file yang diperlukan ke folder lain untuk mendistribusikan program Anda. Mantra sederhana tetapi efektif. Di sini, dalam pertanyaan ini ada beberapa jawaban berbeda untuk mencapai tujuan yang sama. Tapi saya menggunakan opsi ini dan menghindari banyak sakit kepala.
Joma

Pilihan lain tidak bekerja untuk saya, hanya yang ini, tetapi sepertinya yang lain harus menjadi cara yang tepat untuk pergi.
rjferguson

-1

Saya tahu pertanyaan ini telah dijawab bertahun-tahun yang lalu, tetapi bagi mereka seperti saya yang perlu mengubah di mana debugger memulai aplikasi, ubah properti perintah di bawah Project Properties -> Debugging.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.