目录

  • 常用工具
  • QT5.15.2+VS2019环境搭建
  • vscode远程开发配置
  • 报错记录
    • :-1 : error: Debugger encountered an exception: Exception at 0x7ffa86965299, code: 0x6f4: , flags=0x1 (execution cannot be continued) (first chance)
    • 由于找不到MSVCR100.dll,无法继续执行代码
    • 应用程序无法正常启动0xc000007b
    • 无法解析的外部符号,socket相关函数

常用工具

Everything
windows本地文件搜索工具,官网下载地址:https://www.voidtools.com/zh-cn/

BeyondCompare
文件和文件夹比较工具,官网下载地址:https://www.beyondcomparepro.com/download/

7z
高效的主流压缩/解压缩工具,官网下载地址:https://7-zip.org/

Wireshark
网络分析抓包工具,官网地址:https://www.wireshark.org/

SourceTree
Git客户端管理工具,官网下载地址:https://www.sourcetreeapp.com/
如果提示缺少.NET Framework 4.8,下载安装: https://dotnet.microsoft.com/zh-cn/download/visual-studio-sdks

Qt下载,几个国内的镜像
这些目前只能下载Qt5.9及以前部分版本。
中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/
北京理工大学:http://mirror.bit.edu.cn/qtproject/
中国互联网络信息中心:https://mirrors.cnnic.cn/qt/

windows各版本操作系统下载:https://msdn.itellyou.cn/

windbg
windbg是分析release发布运行程序崩溃的重要调试工具,详见:windbg调试分析dump工具,使用windbg分析Qt崩溃原因。

dumpbin
VS自带工具查看lib、dll、exe依赖库和函数,查看dll位数等。
在VS安装目录找Developer Command Prompt命令行工具,一般在开始菜单容易找到,在命令行运行:
dumpbin /dependents myapp.exe #查看可执行程序依赖的动态库。
dumpbin -imports myapp.exe #查看它的输入信息。
dumpbin -exports Qt5Network.dll #查看动态库的导出函数。
dumpbin /headers Qt5Core.dll #查看动态库的位数,machine (x64)代表是64位的,machine (x86)代表是32位的。

depends
可查看exe或dll依赖的动态库列表,官网下载地址:http://www.dependencywalker.com/。

当程序缺少动态库无法运行时,使用depends工具查找丢失的依赖库,打开exe后有标黄和标红的即是可能存在问题的动态库,但如果有问题的是以API-MS-WIN-开头的系统库,可不用处理,主要查找是否丢失了我们自己调用的第三方库。

depends可以查看是debug还是release的dll动态库,使用depends打开dll动态库,如果它依赖的其他dll库是以D结尾,那么这个动态库就是debug的,如果没有D结尾,就是release的;
depends还可以用来查看dll动态库的位数,如果打开的是64位动态库,在动态库名称左侧的图标旁边有“64”的字样,如果打开的是32位动态库,则没有数字。

VLD
VLD( Visual Leak Detector),是一款用于 Visual C++ 的免费的内存泄露检测工具,Qt 的项目只支持MSVC的编译器,MinGW编译器不能使用。
官网下载地址:https://kinddragon.github.io/vld/,我下载的是vld-2.5.1-setup.exe。
双击安装后,在安装目录有三个文件夹:bin(动态库),lib(静态库),include(头文件)。
QT在开发环境使用VLD,把vld.lib静态库拷贝到项目路径/lib/下,头文件拷贝到构建套件目录(比如C:\Qt\5.15.2\msvc2019_64\include\QtCore)。
qt的pro文件添加

LIBS += -L$$PWD/lib -lvld

在qt项目的源文件添加头文件(一般只在一个会执行到的cpp文件添加即可),编译运行后关闭程序,应用程序输出栏会打印内存泄漏信息,包含文件名和行号等。

#define VLD_FORCE_ENABLE//release模式添加,debug模式不需要
#include <vld.h>

ProcessExplorer
windows官方进程资源管理器,可查看系统运行的进程,进程ID,进程占用的资源,进程内运行的所有线程,线程ID,线程占用的资源,线程的调用栈等等,功能强大。
官网下载地址:https://download.sysinternals.com/files/ProcessExplorer.zip。

Windows中使用命令行杀进程
taskkill /pid 22444 -f #根据PID杀死进程,PID可在任务管理器查看
taskkill /f /t /im myapp.exe #根据应用程序名杀死进程
ping fe80::3eec:efff:fe84:eff4%16 #ping IPv6地址,%16是网卡后缀,可用ipconfig查询

TrafficMonitor
windows下开源吞吐量实时测速、CPU/内存利用率工具,绿色无广告、轻量。
下载地址:https://github.com/zhongyang219/TrafficMonitor/releases

QT5.15.2+VS2019环境搭建

VS2019下载地址:https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes
下载的是VS2019下载器,启动后选择“使用C++的桌面开发”,开始下载和安装。

QT官网下载地址:https://www.qt.io/download,选择下载“Downloads for open source users”,再选择“Download the Qt Online Install”,下载Qt在线下载器。
输入账号密码后,下一步,“选择组件”注意选择要安装的版本,主要是6.0以后的版本,6.0以前只支持安装5.15.2,选择MSVC2019和其他需要的组件即可。

qt-vsaddin插件下载地址:https://download.qt.io/archive/vsaddin/2.8.1/,我下载的版本是qt-vsaddin-msvc2019-2.8.1-rev.06.vsix,关闭QT和VS,安装即可,会自动识别VS版本。

安装完成后,启动VS2019,选择“创建新项目”,选择“空白解决方案”,选择保存路径后创建了.sln解决方案文件(可以和QT项目目录放在一起);
VS菜单栏选择扩展-Qt VS Tools,选择Qt Versions,添加version,把QT安装目录下msvc路径复制过来,例如C:\Qt5.15.2\5.15.2\msvc2019_64;再次选择扩展-Qt VS Tools,选择Open Qt Project File(.pro),选择QT的pro文件,解析加载QT项目,右键选择加载进来的项目,点击“生成”即可进行编译。

windows下QT的调试体验较差(比如单步调试卡死,调试调用栈比较浅,调试信息不全等),建议开发时使用QT,调试时 使用VS。
ps:注意当在QT开发时添加了新文件,在VS里也要添加一次(添加-现有项),否则会报无法解析的外部符号。

vscode远程开发配置

vscode官网下载地址:https://code.visualstudio.com/Download
安装完成后:
点击左侧Extensions选项卡
搜索Chinese安装中文插件
搜索插件Remote Development,安装
安装完成后,左侧增加了Remote Explorer选项卡,点击进去
点击Open SSH Config File,点击弹出的config文件,例如C:\Users\Administrator.ssh\config
Host远程主机名,HostName远程主机IP,User登录用户名,Port端口(一般为22)
菜单栏,File-Preferences-Settings,搜索Show Login Terminal,勾选 Always reveal the SSH login terminal
点击Connect in New Window,在新窗口选择linux平台,下面终端输入密码,打开项目文件夹。
Extensions选项卡,搜索安装插件gitlens.
配置SSH免密登录。

可在远程资源管理器界面,点击+号,新建远程,输入命令:ssh chw@192.168.3.66

安装中文插件不显示中文:
按住ctr+shift+p,在出现的输入框中,输入Configure Display Language,选择中文,重启vscode。

报错记录

:-1 : error: Debugger encountered an exception: Exception at 0x7ffa86965299, code: 0x6f4: , flags=0x1 (execution cannot be continued) (first chance)

在调试器中运行程序时,如果程序产生异常,调试器会首先获得通知(即First-chance exception),而后此异常由产生它的程序负责捕获。如果程序没有捕获此异常,那么调试器会再次被通知(即Second-chance exception,Last-chance exception),并结束程序。
如果编译报错,但不影响程序运行,可选择忽略该消息,可设置:工具-选项-调试器-CBD,去勾选“First-chance exceptions”。

由于找不到MSVCR100.dll,无法继续执行代码

MSVCR100.dll也有可能是其他MSCV开发的库,问题类似,当前本地目录没有这个库,系统环境变量路径里也找不到这个库,在开发环境找到这个库拷贝过即可,主要版本位数要匹配,如果不匹配会报下面的0xc000007b错误。

应用程序无法正常启动0xc000007b

缺少DLL动态库或库版本不对,库位数不对,通常是缺msvc的库(msvcr100.dll,msvcr120.dll,msvcp140_1.dll,msvcp120.dll等),使用Everything工具搜索,拷贝系统目录(C:/Windows/system32等)或VS安装目录,一定要注意版本和位数。
排查思路:
1、重命名本地可执行文件路径里面的msvc库,看是不是这些库的版本或位数不对;
2、或者本地目录没有这些库,程序链接到了系统环境里面的同名库,但这些库版本不匹配,使用上面的dumpbin命令查看依赖库,查看系统环境变量路径,找到与环境变量匹配的依赖库的路径,通过重命名或其他方式排除哪一个库有问题,再找到匹配的同名库,拷贝到本地路径。

以上问题还有一个更方便的解决办法,使用windbg工具打开.exe可执行程序,会自动加载动态库,并显示加载动态库的路径,当弹出0xc000007b错误时,加载动作停止,最后面加载的几条动态库出问题的可能性大,一般是msvc的库,大致可以判断是哪个库的问题(每次打开.exe时加载动态库顺序不太一样,可以多试几次)。

也可以使用专业查找缺失DLL动态库的工具:depends,上面常用工具里有介绍,这里不再详述。

无法解析的外部符号,socket相关函数

C++进行Windows socket网络编程,需链接lws2_32库:

LIBS += -lws2_32

Qt+windows开发备忘录相关推荐

  1. windows下qt android开发

    QT交叉编译gsl for android 写在前面 准备 步骤 打开msys GNU环境 制作工具链 编译库 环境变量脚本文件 编译 写在前面 此篇文章用于记录在将qt开发的基于桌面的程序移植到an ...

  2. wince6 qt mysql_用Qt Creator开发Windows的简单计算机的程序

    用Qt Creator开发Windows的简单计算机的程序 因为这次的目的也是为了确认透过Qt来开发WinCE的程序 所以请确认自己的环境是否有设定完成,这部分的进程请看http://www.dotb ...

  3. 如何在Windows下搭建Qt安卓开发环境?

    一.导读 本文描述如何在Windows下搭建Qt安卓开发环境,由于Qt维护的安卓开发环境和安卓开发环境在很大程度上不兼容,所以在选择Qt版本的时候需要注意:在JDK和Android SDK环境的选择上 ...

  4. Windows单独安装QT及VS和QT联合开发环境安装

    Windows单独安装QT及VS和QT结合开发环境安装 Windows单独安装QT及VS和QT结合开发环境安装 一.前言 二.单独安装QT开发环境: 三.安装VS并配置QT环境变量: 四.给QT设置环 ...

  5. Windows下的QT系统开发环境搭建

            QT是一款由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊 ...

  6. Qt-4.6.3移植与Qt creator开发环境建立

    最近把Qt到开发环境建立了起来,以后打算多点时间在学习Qt上面,下面是我的移植与搭建过程,现在贴出来希望能对大家有点帮助..... 作者:顾文彪 博客:http://blog.chinaunix.ne ...

  7. linux eclipse下qt开发环境搭建,Qt Eclipse开发环境的部署 上篇

    关于Qt  Eclipse的开F发,将会从不同的环境中区安装部署,分为上.中.篇,三篇文章来讲.Windows,Linux平台下安装使用eclipse + QT4.4.3开发环境,Windows,Li ...

  8. 【经验】Qt项目开发必备工具

    在实际的项目中,除了需要掌握Qt开发框架本身,还需要掌握一些开发工具.这些工具能起到事半功倍的效果,甚至某些工具是开发不可或缺的.下面笔者就介绍一些常用的开发工具的用法及下载地址,希望对缺少实际项目经 ...

  9. 【Qt设计开发】GUI界面设计开发

    文章目录 一.Qt简介和下载安装 二.Qt入门 2.1 创建第一个项目 2.2 快捷键和命名规范 2.3 Qt项目和VS2022项目相互转换 三.Qt基础 3.1 Qt对象树和窗口坐标系概念 3.2 ...

最新文章

  1. 30 分钟 git 命令入门
  2. STL学习小记--与C++模板相关的几个特性
  3. MATLAB AWGN信道 M-ary PSK 误码性能
  4. Cocoa编程学习笔记一
  5. android点击运行后无法显示设备,Android仿真器除了黑屏外什么都不显示,adb设备显示“设备离线”...
  6. 信息学奥赛一本通 2053:【例3.3】三个数
  7. JavaScript是如何工作的:Web推送通知的机制
  8. dreamhost 优惠码_DreamHost如何通过OpenStack重塑自己
  9. 【系统分析师之路】系统分析师历年真题大汇总
  10. DeepL Pro(deepl翻译器)官方中文版V2.2.0 | 翻译软件哪个好用 | 翻译软件排行榜前十的神器
  11. C盘清理最全攻略,用这几招轻松解决,不存在C盘爆红
  12. 如何看懂财务报表:(一)如何下载财报
  13. 使用 TICS Pro 配置时钟芯片
  14. [iOS开发]Instruments工具的学习
  15. The Secant Method(正割法、弦截法) 附C语言代码
  16. adb 和 scrcpy实现手机无线投屏
  17. python中strip()函数的详解
  18. 类的封装(概念,如何封装)
  19. ADAS-GPS定位原理概述
  20. 2012年总结2013年展望

热门文章

  1. word学习/word如何显示空格/LaTeX格式转为Word格式/ latex中的公式格式如何转换成word中的公式格式/excel复制到word表格过大超出
  2. SpringBoot Jar启动
  3. SpringBoot使用记录之日志Logback
  4. Boost 1.46.1编译成VS2008版本
  5. Live800:企业网站如何添加客服?
  6. 创客集结号:3D打印的材料
  7. 今天终于拿到学位证和毕业证
  8. 好消息,支持在线协作,一键docker私有部署的国产电子表格Luckysheet后台也开源了
  9. SCA-Soft Composition Analysis软件成分分析
  10. 空调冰箱制冷系统,空调冰箱控制电路,组装调试维修考核