我已经成功地在带有 MSYS shell 环境的 windows 上使用 opencv 构建了一个演示应用程序。
我没有使用预构建的 opencv 安装程序,我在本地下载并编译了源代码(这是推荐的方法)。
构建 opencv 并运行 make install 后,所有文件都愉快地在:
/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})
在这里要完全清楚:构建二进制文件是成功的。
现在,当我从 shell 运行它时,我收到消息:
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)Windows 或 2)MSYS 环境快乐。Windows上的LD_LIBRARY_PATH之类的东西?
或者这不是问题,我实际上(尽管看起来)以某种方式弄乱了二进制文件的编译方式?
编辑:
注意。无论出于何种原因,我的库似乎都是 .dll.a 文件,而不是 .dlls(请参阅 ls 结果),如果这与远程相关的话。