Visual StudioでDLLファイルへのパスを設定するにはどうすればよいですか?


130

DLLファイルに依存するアプリケーションを開発しました。アプリケーションをデバッグすると、アプリケーションから次のような不満が出ます。

xxx.dllが見つからなかったため、このアプリケーションは起動に失敗しました。

そのため、DLLファイルを.vcprojファイルと同じディレクトリにコピーする必要があります。

DLLファイルを(好ましくは)相対パスまたは(好ましくない)絶対パスで検索するようにプロジェクトを設定する方法はありますか?

プロジェクト設定でインクルードとライブラリパスを設定する方法と同様の概念。

つまり、アプリケーションをデバッグする(を押すF5)と、上記のエラーがポップアップします。

回答:


196
  1. プロジェクトのプロパティに移動(Alt + F7)
  2. デバッグの下で、右を見てください
  3. 環境フィールドがあります。
  4. ここに相対パス(vcprojフォルダーからの相対パス)を追加します。つまりPATH=%PATH%;$(ProjectDir)\some-framework\lib、パスに追加または前置することにより、.. \ some-framework \ libPATH=C:\some-framework\lib;%PATH%
  5. もう一度F5(デバッグ)を押すと、機能するはずです。

15
[環境]フィールドは、NAME = VALUEのセミコロン区切りのペアを取ります。PATH変数に追加して、VSデバッガーがDLLの追加の場所を検索するようにします:PATH =%PATH%; $(ProjectDir)lib
Brent Faust

1
リリースビルドでも同様の方法はありますか?
Narek 2017年

$(LibraryPath)変数にdllパスを追加する必要がありました(またはConfig Properties-> VC ++ Directories設定のLibrary Directoriesの下のリストにそれを含めました)。
Foster Boondoggle

1
@ SlippD.Thompsonええ、あなたは正しいです。ただし、代わりにAlt + p、pを使用して同じことを達成できます。
Jenix

1
@ SlippD.Thompsonああ、あなたのコメントをもう一度読んで、私はあなたの意味を誤解したと思います。はい私は同意する。しかし、少なくとも、Visual Studioでは変更されないホットキーがいくつかあり、 'Alt + p、p'はその1つです。これは 'Alt + F7'と一緒にありましたが、これはご存じのように別のことを意味します。また、「Alt + p、p」は単に「プロジェクトメニュー> *プロパティ」を意味します。
Jenix

7

LoadLibrary()を呼び出すときにローダーが使用する検索パスは、SetDllDirectory()関数を使用して変更できます。したがって、これを呼び出すだけで、ロードする前に依存関係へのパスを追加できます。

DLL検索順序も参照してください。


7

プロジェクトのプロパティを確認->参照パス

次に、DLLを含むフォルダを追加します


4
複数の質問に同じ回答を投稿しないでください。良い答えを1つ投稿してから、投票またはフラグを立てて、他の質問を重複として閉じます。質問が重複していない場合は、質問に対する回答を調整してください。
durron597


2
これは、Visual Studio 2015のC ++プロジェクトでは利用できないようです。このオプションをサポートしているのは、Visual Studioのバージョンとプロジェクトタイプの組み合わせですか。
FilipBártek18年

OPの質問はC ++に関するものでしたが、この回答はC#に対するものです。
Jenix

C#とVS2017で動作しませんでした
mherzog

4

もう1つの可能性はWorking Directory、デバッグオプションの下に、そのDLLがあるディレクトリを設定することです。

編集:Visual Studioを起動するためにバッチファイルを使用すること(およびバッチファイルでPATH変数を設定すること)について言及しました。そのため、少し検索を行ったところ、このまったく同じ質問がこの投稿で少し前に行われたことがわかりました。答えは、バッチファイルオプションと、明らかにジョブを実行する可能性のあるプロジェクト設定を示しています(テストしていません)。


2つのDLLに依存している場合、それぞれが独自のディレクトリにありますか?(上記の質問を簡略化しました)
sivabudh 2010年

このソリューションを複数のディレクトリで機能させることは不可能だと思います。
Mark Wilkins

3

プロジェクトのプロパティで(プロジェクトを右クリックし、プロパティボタンをクリックします)▶設定のプロパティ▶ビルドイベント▶ビルド後のイベント▶コマンドライン。

1つの命令を編集してコマンドラインに追加します。たとえば、botan.dllをソースパスからプログラムが実行されている場所にコピーします。

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

プロジェクトのプロパティ


それを行うのが正しいかどうかはわかりませんが、IDEがそのオプションを提供してくれて便利でした。プログラムを配布するために必要なすべてのファイルを別のフォルダにコピーしたい場合は、良いオプションだと思います。シンプルな呪文ですが効果的です。この質問には、同じ目的を達成するためのさまざまな答えがあります。しかし、私はこのオプションを使用して、多くの頭痛の種を避けています。
Joma

他のオプションは私にとってはうまくいきませんでした、これだけですが、他のオプションが正しい方法であるようです。
rjferguson

-1

私はこの質問が何年も前に回答されたことを知っていますが、デバッガーがアプリケーションを開始する場所を変更する必要があった私のような人のために、プロジェクトのプロパティ->デバッグでコマンドのプロパティを変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.