web-dev-qa-db-ja.com

Visual StudioがDLLを見つけられないのはなぜですか?

Visual Studio 2010では、VC++ Directories > Executable Directoriesの下で、glew32d.dllへのパスを指定しました。ただし、実行可能ファイルを実行すると、まだ文句を言います。

一方、DLLをローカルフォルダーにコピーして実行可能ファイルを実行した場合、エラーは発生しません。

誰かがこれを修正する方法を教えてもらえますか?また、Visual Studioがそのパスを認識しないのはなぜですか?

更新シナリオ:現在、多くのプロジェクトのスターターコードとして使用するテンプレートプロジェクトを使用しています。このテンプレートは、glew32d.dllに依存しています。私は通常、すべての依存DLLを共通のbinフォルダーに保存します。このフォルダーを参照したいと思っていたので、Visual Studioはそこからdllを読み取ることができ、毎回dllをコピーする必要はありませんでした。これを処理する良い方法は何でしょうか?

44
brainydexter

プロジェクトの設定でDLLファイルへのパスを指定しても、アプリケーションが
find DLL実行時に。必要なファイルを見つける方法をVisual Studioに指示しただけです。それは何もありません。
プログラムが構築された後、プログラムが必要なものを見つける方法に関係します。

DLLファイルを実行可能ファイルと同じフォルダーに配置するのが最も簡単な解決策です。これは依存関係の デフォルトの検索パス なので、実行する必要はありませんそのルートに行くなら特別な何か。
毎回これを手動で行う必要を回避するために、プロジェクトのビルド後イベントを作成できます。
は、ビルドの完了後、DLL=を適切なディレクトリに自動的にコピーします。

または、DLL=をWindows サイドバイサイドキャッシュ にデプロイし、場所を指定するマニフェストをアプリケーションに追加することもできます。

60
Cody Gray

私は同じライブラリで同じ問題を経験しましたが、ここで解決策を見つけました:

「方法:プロジェクトの環境変数を設定する」をMSDNで検索してください。 (プロジェクト>プロパティ>構成プロパティ>ラッシュにいる人のための「環境」および「環境のマージ」プロパティのデバッグ。

構文はNAME = VALUEであり、マクロを使用できます(たとえば、$(OutDir))。

たとえば、C:\ Windows\TempをPATHの先頭に追加するには:

PATH=C:\WINDOWS\Temp;%PATH%

同様に、$(TargetDir)\ DLLSをPATHに追加するには:

PATH=%PATH%;$(TargetDir)\DLLS

(ここで多重共線性により回答: Visual Studioでパスを設定するにはどうすればよいですか

40
Oleg

「構成プロパティ->デバッグ->環境」を試し、実行時にPATH変数を設定します

7
waytofall

オレグの答えに追加するには:

構成プロパティ->デバッグでPATH環境変数にVisual Studioの$(ExecutablePath)を追加することで、実行時にDLLを見つけることができました。このマクロは、構成で定義されたものです[プロパティ]-> [VC++ディレクトリ]-> [実行可能ディレクトリ]フィールド*。したがって、必要なDLLを指すように設定している場合、これをPATHに追加するだけで、実行時にDLLを簡単に見つけることができます。

* $(ExecutablePath)マクロがプロジェクトの実行可能ディレクトリ設定を使用するのか、グローバルプロパティページの実行可能ディレクトリ設定を使用するのか実際にはわかりません。よく使用するライブラリはすべてプロパティページで構成されているため、これらのディレクトリは、作成する新しいプロジェクトのデフォルトとして表示されます。

5
may5694