我已经使用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结果),如果它是远程相关的。
答案 0 :(得分:0)
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相同的目录中。您可以通过使用命令
创建符号链接来获得相同的效果ln -s /e/deps/libopencv/build/install/lib/libopencv_core231.dll libopencv_core231.dll
在/e/deps/libopencv/build/install/
目录中