4

私は OpenCV の使用方法を学んでおり、練習としてプログラムを実行しました (リリース モード、x64)。コンパイル エラーはありませんでしたが、次のようなポップアップ画面が表示されました。

「opencv_core243.dll が見つからないため、プログラムを開始できません」

ただし、正しい環境変数を宣言し、必要なライブラリ/ディレクトリを指定したことを確認しました。次の .dll ファイルを x64/Release にコピーすると、問題が解決しました。

  • opencv_core243.dll
  • opencv_highgui243.dll
  • opencv_imgproc243.dll

私のプログラムは問題なくコンパイルされ、動作します。しかし、その理由を知りたいです。これらの .dll ファイルをコピーして貼り付けるのは安っぽく感じます。これらの .dll ファイルが自動的に生成される手順を見逃していませんか?

4

1 に答える 1

4

この問題の実際の解決策は、opencv bin ディレクトリのパスをシステムPATH環境変数に追加することです。

Visual Studio 2010 に OpenCV をインストールするための完全な手順を説明しているこの回答をご覧ください。

このアプローチには欠点があります。ビルド済みの OpenCV x86 および x64 バイナリは同じ名前です。そのため、OpenCV のパスをPATH変数に追加することで、32 ビット版または 64 ビット版を一度に実行できます。他のバージョンを実行するには、PATH変数を変更する必要があります。

これに代わる方法 (私の個人的なお気に入り) には、dll を出力ディレクトリにコピーすることも含まれますが、これはコンパイルの最後に自動的に行われます。私がしていることは、x86 および x64 dll パス用の新しい環境変数を作成することです。ユーザー変数を作成し、CV_BIN32それぞれCV_BIN64x86 および x64 dll のパスを含めます。

ユーザー変数を作成したら、OpenCV プロジェクトを開き、Project Properties-> Build Events-> Post-Build Event->に移動しCommand Lineます。

実行時に必要な dll のコピー コマンドを追加します。

これは Win32 リリース構成用です。

copy "$(CV_BIN32)\opencv_core243.dll" "$(OutDir)"
copy "$(CV_BIN32)\opencv_highgui243.dll" "$(OutDir)"

(デバッグ/リリース)、(Win32/x64) の 4 つの構成すべてで変更できます。

プロジェクトのビルド手順が完了すると、指定した dll が出力ディレクトリに自動的にコピーされ、エラーは表示されなくなります。

于 2013-01-21T10:43:36.437 に答える