web-dev-qa-db-ja.com

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

DLLファイルに依存するアプリケーションを開発しました。 デバッグ私のアプリケーションの場合、アプリケーションは次のように文句を言うでしょう:

「xxx.dllが見つからなかったため、このアプリケーションを開始できませんでした。」

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

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

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

私がdebug my application(hitting F5)上記のエラーがポップアップします。

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

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

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

8
i_am_jorf

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

次に、DLLのフォルダーを追加します

8
kravits88

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

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

4
Mark Wilkins

プロジェクトのプロパティで(プロジェクトを右クリックし、プロパティボタンをクリック)▶構成プロパティ▶ビルドイベント▶ビルドイベントのポスト▶コマンドライン。

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

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

Project Properties

2
Joma