欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Windows+VS Code+mingw64+cmake使用opencv库

程序员文章站 2022-05-24 15:44:41
...

基础环境

VS Code 1.44.2

Windows10 x641909

cmake 3.17.1

mingw64 8.1.0

vsc插件有c/c++、cmake、cmake tools、C++ Intellisense

链接OpenCV库步骤

1. 下载OpenCV的二进制库,OpenCV官网发布的Windows下OpenCV库是MSVC编译的,也就是VS的编译器,Mingw是无法直接使用该库,需要重新编译OpenCV或下载别人用Mingw编译后的库,这里推荐第二种,第一种又得折腾半天。从https://github.com/huihut/OpenCV-MinGW-Build这个地址下载编译后的库,每个库都注明了编译的环境,要注意的是,别人的环境可以和自己的不尽相同,但是位数必须相同,否则就会踩坑,导致链接时无法链接到下载的库,简单来讲,mingw64就下载x64的库,32位就下载32位的库。

2. 下载完成后,文件夹里结构如下图所示,程序需要使用的头文件在include里,库文件在x64里,x64文件夹内有bin和lib两个文件夹,lib中存放mingw的.a库,bin中存放程序执行时需要的dll库。Windows+VS Code+mingw64+cmake使用opencv库

3. 修改CMakeLists.txt文件,如下列代码所示,先设置OpenCV_DIR的路径,以方便find_package工作,否则会提示找不到OpenCV库;然后在添加头文件路径时,默认的路径会少一个opencv2,而这个又常用到,因此也加上了;接下来原本设置了库路径,后来发现不写也是可以的;最后链接OpenCV库,其中OpenCV_INCLUDE_DIRS、OpenCV_LIBS这些变量会在find_package找到OpenCV库后自动被设置。

cmake_minimum_required(VERSION 3.8.0)
project(kcf VERSION 0.1.0)
SET(CMAKE_BUILD_TYPE DEBUG)

FILE(GLOB SRC_FILE "*.cpp" "*.hpp" "*.h")
set(OpenCV_DIR "D:/ProfessionalSoftware/OpenCV-MinGW-3.4.8/x64/mingw/lib")

find_package(OpenCV REQUIRED)
# directory of opencv headers
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories("D:\\ProfessionalSoftware\\OpenCV-MinGW-3.4.8\\include\\opencv2")
# directory of opencv library
#link_directories("D:/Project/OpenCV-MinGW-Build-OpenCV-3.4.8-x64/OpenCV-MinGW-Build-OpenCV-3.4.8-x64/x64/mingw/lib")
link_libraries(${OpenCV_LIBS})

# name of executable file and path of source file
add_executable(kcf ${SRC_FILE})



set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

4.GDB设置,直接启动gdb调试会报0xc0000135错误,这是由于gdb找不到动态链接库中的dll文件造成的,同时编译生成的exe程序直接执行也会报找不到dll的错误,对于直接执行exe程序的,可以将第2步中的bin文件夹加入系统环境变量的path中,再执行就不会报错,但是该方法对gdb无效,暂时不知道什么原因,为使得gdb能够正常调试,可以将第2步bin文件夹下的dll文件全部复制到生成的exe程序所在的目录,我这里是在build文件夹下,然后即可正常启动gdb调试,同时该方法对直接执行exe文件也是有效的。

Windows+VS Code+mingw64+cmake使用opencv库

Windows+VS Code+mingw64+cmake使用opencv库

相关标签: 开发环境