1

MSYSシェル環境のWindowsでopencvを使用してデモアプリを正常に構築しました。

ビルド済みのopencvインストーラーを使用せず、ソースをローカルにダウンロードしてコンパイルしました(これが推奨される方法です)。

opencvをビルドしてmakeinstallを実行すると、すべてのファイルが次の場所に表示されます。

/e/deps/libopencv/build/install/

次の行に沿ってcmakeディレクティブを使用して、これに対してサンプルアプリケーションを正常に構築できます。

find_package(OPENCV REQUIRED)
link_directory(${OpenCV_LIB_DIR})
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(target ${OpenCV_LIBS})

ここで完全に明確にするために:バイナリの構築は成功しています。

これで、シェルから実行すると、次のメッセージが表示されます。

The program can't start because libopencv_core231.dll is missing from your computer. 
Try reinstalling the program to fix this problem.

だから...私は図書館がどこにあるか知っています:

$ ls /e/deps/libopencv/build/install/lib/
libopencv_calib3d231.dll.a  libopencv_features2d231.dll.a  libopencv_highgui231.dll.a     libopencv_ml231.dll.a         libopencv_video231.dll.a
libopencv_contrib231.dll.a  libopencv_flann231.dll.a       libopencv_imgproc231.dll.a  libopencv_objdetect231.dll.a
libopencv_core231.dll.a     libopencv_gpu231.dll.a         libopencv_legacy231.dll.a   libopencv_ts231.a

今何?

私はcmakeに静的バイナリを構築させることを試みることができたと思いますが、それはかなり極端に思えます。

どうすれば1)ウィンドウまたは2)MSYS環境を幸せにすることができますか。WindowsのLD_LIBRARY_PATHのようなものですか?

それとも、これは問題ではありません、そして私は実際に(外観にもかかわらず)バイナリがコンパイルされた方法をどういうわけか台無しにしましたか?

編集:

NB。何らかの理由で、私のライブラリは.dll.aファイルであり、リモートで関連している場合は.dllsではないようです(lsの結果を参照)。

4

1 に答える 1

0

windowsは、exeと同じディレクトリ、%PATH%(Windows)または$PATH(msys)ディレクトリ内の任意のディレクトリ、およびwindowsフォルダ内のいくつかの特別なディレクトリを検索します。に追加でき/e/deps/libopencv/build/install/libます$PATH。これがmsysで機能するかどうかはわかりませんが、代わりにWindowsに追加E:\deps\libopencv\build\install\libする必要があるかもしれません。%PATH%

プログラムを他の人に提供する場合の一般的な解決策は、EXEと同じディレクトリにDLLのコピーを含めることです。コマンドを使用してシンボリックリンクを作成することで、これと同じ効果を得ることができます。

ln -s /e/deps/libopencv/build/install/lib/libopencv_core231.dll libopencv_core231.dll

/e/deps/libopencv/build/install/ディレクトリにいる間

于 2012-05-02T03:11:05.307 に答える