vscode使用了mingw64,在使用官网下载的opencv后,发现有函数提示功能,但是在调试时出现了各种opencv库中的各种函数未定义的情况(如下图代码所示的类型),然后突然明白过来,既然使用了mingw,那么相对应的opencv也应该使用mingw版本,但是官网不提供该版本的下载,那就只能自己编译一个该版本出来。

C:\Eulerian Real-Time OpenCV build\Realtime-Video-Magnification-master\build-rvm-Desktop_Qt_5_9_0_MinGW_32bit-Debug\debug\main.o:-1: In function `ZN2cv6StringaSERKS0_':E:\opencv\build\include\opencv2\core\cvstd.hpp:672: error: undefined reference to `cv::String::deallocate()'C:\Eulerian Real-Time OpenCV build\Realtime-Video-Magnification-master\src\main\threads\CaptureThread.h:42: error: undefined reference to `cv::VideoCapture::~VideoCapture()'

注意:使用的工具版本如下,一定要注意版本问题,如果使用的mingw64版本和opencv版本不对应,那简直是一个天坑,将会在mingw64-make 的时候无限报错,这简直能折磨死人。

  • 首先提供一个opencv mingw版本的下载地址:

opencv-mingw

  • 我的编译环境

mingw64-4.8.1

opencv-3.4.1

cmake-3.10,0

  • 安装mingw64和cmake,记得首先配置mingw64和cmake的环境变量
  • 打开cmake-gui
  1. 设置源码目录和编译目录
  2. 电机configure,设置编译器为MinGW Makefiles
  3. 如果设置好了环境变量,下方默认即可
  4. 点击finish
  5. 配置完成后,一片红,不要着急
  6. 勾选ENABLE_CXX11和WITH_OPENGL,不勾选ENABLE_PRECOMPILED_HEADERS和WITH_IPP
  7. 注意mingw64/x86_64-mingw32/include/aviriff.h文件第一行的注释少了一个“/”,添加,然后保存(此步骤非必须)
  8. 继续点击cmake-gui的configure,配置结束后点击generate即可
  9. 通过cmd进入编译目录,执行mingw32-make -j 8
  10. 无错误后,执行mingw32-make install
  • 配置vscode和opencv环境

ERROR: During startup program exited with code 0xc0000135.

  1. 配置c_cpp_properties(今天大概服务器有问题,代码一粘贴网页就卡死,先跳过这三个配置文件,改天来补充)

{

"configurations": [

{

"name": "Win32",

"includePath": [

"D:/opencv-3.4.1/mingw-x64-install/install/include",

"${workspaceFolder}/**",

"D:/opencv-3.4.1/mingw-x64-install/install/include/opencv",

"D:/opencv-3.4.1/mingw-x64-install/install/include/opencv2"

],

"defines": [

"_DEBUG",

"UNICODE",

"_UNICODE"

],

"compilerPath": "D:\\mingw64\\bin\\gcc.exe",

"cStandard": "c11",

"cppStandard": "c++17",

"intelliSenseMode": "clang-x64"

}

],

"version": 4

}

请注意:关键代码为  "includePath"里的内容,这里需要将opencv里的头文件包含进来。

  1. 配置launch

{

"version": "0.2.0",

"configurations": [

{

"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示

"type": "cppdbg", // 配置类型,这里只能为cppdbg

"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)

"program": "${workspaceRoot}/build/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径

"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可

"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false

"cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录

"environment": [],

"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台

"MIMode": "gdb",

//"miDebuggerPath": "D:\\Mingw\\bin\\gdb.exe",

"miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应

"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc

"setupCommands": [

{

"description": "Enable pretty-printing for gdb",

"text": "-enable-pretty-printing",

"ignoreFailures": true

}

]

}

]

}

请注意:此处的关键代码为"miDebuggerPath"里的语句,里面包含gdb.exe的目录地址; "program"里为调试程序的路径,之所以放到build里,是因为如果包含了动态链接库,那么动态链接库需要拷贝到和编译的.exe文件相同目录下,和tasks.json文件里的args参数相对应。

  1. 配置tasks

{

"version": "2.0.0",

"command": "g++",

"args": ["-g","${file}","-o","build/${fileBasenameNoExtension}.exe",

"-I", "D:/opencv-3.4.1/mingw-x64-install/install/include",

"-I", "D:/opencv-3.4.1/mingw-x64-install/install/include/opencv",

"-I", "D:/opencv-3.4.1/mingw-x64-install/install/include/opencv2",

"-L", "D:/opencv-3.4.1/mingw-x64-install/install/x64/mingw/bin/lib*",

],

"problemMatcher": {

"owner": "cpp",

"fileLocation": ["relative", "${workspaceRoot}"],

"pattern": {

"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",

"file": 1,

"line": 2,

"column": 3,

"severity": 4,

"message": 5

}

}

}

注意:这里的关键代码是args里的参数,这里“-g”定义了编译出的.exe文件的存放目录(和c_cpp_properties文件相对应),“-I”里的参数和c_cpp_properties文件相对应,“-L”里定义了所编译出的opencv里的库文件的包含目录(需要拷贝到和.exe相同目录)。

  1. 写测试代码后,执行,发现console一闪而逝,无报错。
  2. 上述错误,是因为引入的库没有正确链接到导致的,将之前编译好的opencv-mingw包里的install/x64/mingw/bin里的文件拷贝出来,拷贝到vscode中测试代码的当前目录,再次执行,发现控制台不再消失,一切正常。
  3. 经过测试后发现,这是因为在windows下所编译出的.exe文件(通过task.json配置)需要和库文件在同一个目录,所以养成良好的工作目录环境配置是必要的。
  4. 建议的目录:

workspace

.vscode

c_cpp_properties.json

launch.json

tasks.json

include

(所包含的头文件等,建议,也可以直接将头文件放在src)

build

(各种库文件等依赖的内容)

src

(源码)

vscode配置opencv环境,包括opencv源码编译(mingw64 + cmake)相关推荐

  1. opencv + contrib windows下源码编译

    网上,包括书上有很多人云亦云的源码编译方式,不能说不正确但是有很多弯弯绕绕(坑).最近刚做完了一个识别项目的第一个版本,总结了一下..为了写这篇文章,特意重新在自己电脑搭了一遍开发环境. 最权威的方式 ...

  2. 小明分享| SigmastarSSD201环境搭建及源码编译

    本文以目前最新版本(TAKOYAKI_DLS00V008)的 SDK 为例,讲述 SigmastarSSD201/202 环境搭建 源码下载 下载 kernel 源码 从 https://mirror ...

  3. Wt(C++ Web) 源码编译以及cmake配置

    1. 环境配置 推荐还是源码编译到自己的位置,毕竟装到系统位置,导致的版本冲突挺严重 1.1 Boost wget https://boostorg.jfrog.io/artifactory/main ...

  4. Centos环境下mysql源码编译安装

    yum -y install gcc gcc-c++ ncurses-devel perl ##从mysql5.5起,mysql源码安装开始使用cmake了,设置源码编译配置脚本. wget --no ...

  5. linux git编译安装目录,Linux(centos) 环境下如何源码编译安装git

    21运维原创,转载请注明出处. 最近线上要使用git进行代码发布和版本管理了,之前搞过,一直没有做记录.从今儿起开始记录这块. linux上(当前文章使用的是centos,ubuntu采用apt-ge ...

  6. ubuntu下 vscode 配置c++ 环境和opencv

    先放链接 19年的,重点讲cv的配置与编译 要看准路径 这篇重点讲vscode的配置 建议多试几遍,加深理解 vscode配置这篇讲的比较好,和cv无关 要是报错动态库连接失败 官方教程

  7. pytorch怎么加入环境变量_Pytorch源码编译简明指南

    前言 最近在浅尝Pytorch的源码,利用业余时间去品读品读,看着看着,第一次对Pytorch有了重新的认识. 原来现在Pytorch的版图是如此之大,Pytorch已经不是一年前的Pytorch了. ...

  8. 国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南

    国外开源IoT平台Thingsboard社区版本源码编译及运行指南 1 下载 2 软件环境及版本 2.1 系统环境 2.2 数据库环境 2.3 前端环境 2.4 编译环境 2.5 应用环境 3 编译 ...

  9. 【MySQL内核系列】Centos7环境MySQL5.7源码编译教程

    1.下载源码 下载带boost库的源码解压(-DDOWNLOAD_BOOST=1 为直接下载boost库),安装下面系统依赖.(Percona Software downloads for datab ...

  10. Android 源码编译 及 mk文件解读

    Android 源码编译 参考:探索Android FrameWork底层开发视频_哔哩哔哩_bilibili 基础 1.源代码编译 分为2个部分: (1)boot/Kernel (2)Android ...

最新文章

  1. 3文件提取器_eMail Address Extractor for Mac(邮件地址提取器)
  2. 流数据机器学习平台SAMOA简介
  3. DNS及DNS有什么作用
  4. do while(false)
  5. php mysql随机数不重复,js生成不重复的随机数
  6. js操作改变原数组的解决方法
  7. 个人成长:拉开你和同龄人差距的100个顶级认知
  8. ASP.NET Core 3.x - 为什么采用新的 Endpoint Routing 路由系统
  9. c++ ptree判断是否存在节点_CTreeCtrl 查找 等于某值 的节点,并设置为高亮
  10. Springboot java -jar 提示没没有主清单属性
  11. Qt总结之十一:内存泄漏(汇总)
  12. 高并发下的HashMap
  13. kux转mp4_QSV、KUX一秒转换成MP4,这两款神器你还不收藏?
  14. 【等保常见问题解答】等保测评机构能帮忙做等保整改吗?
  15. PS快速处理证件照(给证件照拉直)
  16. 阿里程序员吐槽:应届生年薪40万,让老员工怎么活!
  17. python自定义html_Python 第十二篇:HTML基础
  18. 知识图谱问答的实践技术分享的书面版本
  19. 基于RoCE v1配置PFC
  20. 100集华为HCIE安全培训视频教材整理 | 流量型攻击防范技术-UDP

热门文章

  1. 来了老弟,表格的渲染
  2. 产品如何选择 RF射频,RF433,RF315
  3. php编译安装, 编译安装nginx, yum安装nginx, nginx虚拟主机,默认虚拟主机
  4. 第 04 课 用户管理
  5. CST(CST Studio Suite)建立工程和基本绘图方法
  6. 关于python使用Onenbsp;Classamp;nbs…
  7. Web攻防--基础入门--特定漏洞
  8. 实现网站对IP地址的限制访问
  9. 【我的Android进阶之旅】SQLite出错时候的错误码整理
  10. word分散对齐调整宽度_Word文字对齐如何调整,word对齐方法大全