我已经使用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)窗户,或2)MSYS环境快乐 . 像Windows上的LD_LIBRARY_PATH之类的东西?
或者这不是问题,我实际上(尽管出现)不知何故弄乱了二进制编译的方式?
编辑:
NB . 无论出于何种原因,我的库似乎是.dll.a文件,而不是.dll(参见ls结果),如果它是远程相关的 .
1 回答
windows搜索与exe相同的目录,
%PATH%
(Windows)或$PATH
(msys)目录中的任何目录,以及windows文件夹中的一些特殊目录您可以将/e/deps/libopencv/build/install/lib
添加到$PATH
. 我不确定这是否适用于msys,您可能需要在Windows中将E:\deps\libopencv\build\install\lib
添加到%PATH%
.如果您将程序提供给其他人,则典型的解决方案是将DLL的副本包含在与EXE相同的目录中 . 您可以通过使用该命令创建符号链接来获得相同的效果
而在
/e/deps/libopencv/build/install/
目录中