VS2017+Qt5.12使用问题笔记

本文汇总了使用VS2017和Qt开发过程中遇到的各种编译、调试问题及其解决方法,包括语法错误、编译错误、调试运行问题等,并提供了IDE安装及使用的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.语法

1.1 bool变量

VS2017下默认为false(结构体中默认为true),QtCreator下默认为true。

if (-1) //为true
if (0) //为false

1.2 error: C2143: 语法错误: 缺少“;”在“*”的前面

一般因为头文件的成员变量不识别。
1.使用类前置声明。
2.两个头文件使用相同的预编译宏,改为不一样即可。

1.3 error: C2039(不是结构体的成员)

变量之间中文逗号。

二.编译

2.1 error C2872: “ACCESS_MASK”: 不明确的符号

opencv的using namespace cv和windows.h中ACCESS_MASK定义冲突
解决方式:。
1.h文件尽量不用using namespace cv ,ImageLibrary.h,如果要用尽量放在.cpp文件。

2.2 c2001常量中有换行符问题

文件代码改成utf-8编码后报此错。
解决方式:
1.改成带BOM的utf-8(notepad)。
2.VS2017 高级保存设置-utf-8带字符。

2.3 error MSB3073: 命令“setlocal

ui文件删除修改错误

2.4 LNK2019无法解析的外部符号报错

1.lib库无或者32/64、debug/release不对应)。
2.头文件只声明未定义)。

2.5 相对路径工程设置

A.相对路径工程设置

$(SolutionDir)\Camera #解决方案sln文件所在目录 
.\x64\Release #.代表.vcproj 上级目录(以工程文件 xxx.vcproj 为起点进行相对路径计算)

2.6 类成员QListcv::Mat clear()致崩

类提升错误,QList的size为500左右(猜测类指针正确初始化后size应为0)。

2.7 anomaly:meaningless rex used

暂猜测和加密软件有关

2.8 msvcr90.dll处 cv::imwrite时报错

VS2017调用opencv2.4时(opencv与msvc编译器版本不一致)
1.安装vs2008运行时(未解决)
2.调用opencv450(解决)

2.9 打开不同版本工程

error MSB8020: 无法找到 v142 的生成工具(平台工具集 =“v142”)(右键工程 属性-常规-平台工具集)。
error MSB8036: 找不到 Windows SDK 版本10.0。(菜单 项目-重定解决方案)。
error MSB803: 找不到 Windows SDK 版本10.0。(修改过SDK小版本,重新cmake)。
右键解决方案,没有“重定解决方案目标”这一菜单项
笔记:右键属性-常规-修改(WindowsSDK版本+平台工具集)
MSB6006 "cmd.exe"已退出,代码为3(猜测vcproj文件不一致报错)。

2.10 C2018:未知字符,(QtCretor),win10SDK的winperf.h

h文件(utf-8),cpp文件(utf-8 bom),改为统一编码形式解决。
根本解决方法:运行VS2017安装程序,修复新下载win10SDK重启电脑。

2.11 右键工程添加资源文件失败,提示(rcdll.dll;无法找到资源编译器DLL)

从C盘搜索找到rcdll.dll,复制到报错位置解决。

2.12 配置“Debug|x64”的 Designtime 生成失败。IntelliSense 可能不可用

VS2017+QT13.2。VS中一打开QT项目就报错

2.13 vs2017无法打开ui文件

vs2017+Qt 无法打开ui文件
打开方式-添加designer.exe,二次设置。

三.调试运行

3.1 未加载ucrtbase.pdb/Qt5Core.pdb

1.imwrite时Mat长宽为0。//continue后代码一直未命中
2.cv::Rect越界致崩。

3.2 VS程序不显示控制台

方式一

#pragma comment( linker,/subsystem:windows /entry:mainCRTStartup” )//main函数前添加下面的编译设置

方式二
1.“配置属性”->“链接器”->“系统”->“子系统”,设置为“Windows(/SUBSYSTEM:WINDOWS)”。
2“链接器”->“高级”选项中添加“入口点”:mainCRTStartup:

3.3 帧不在模块中

问题背景:调用vs2017+Qt5.12+matlap。
解决方式:继续运行(猜测调试堆栈找不到源码而提示)。

3.4 vs2017当前不会命中断点。没有与此行关联的调试程序

最大优化速度,改为禁用。

3.5 VS2017退出异常、黑屏死机问题

for循环i+0致死循环。

3.6 QCreator(unable to create a debugging engine)

安装dbg_amd64.msi。

3.7 QCreator(stdlib.h因加密乱码,致Mainwindow编译不通过)

vs2017修复、更新失败,重新安装解决。

3.8 msvcr90.dll处cv::imwrite报错

调用opencv244,改为调用opencv450。

3.9 QCreator(debug)Qt5Cored.dll处inferior报错,同4.1、4.2

debug目录,windeployqt生成debug版文件。

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

安装、卸载vs2022导致,运行安装文件修复解决。

3.11 vcruntime140_1.dll无法继续执行代码

下载vcruntime140_1.dll
下载,置于C:/Windows/System32解决

3.12 已引发异常:读取访问权限冲突。this是0x68。

给类成员变量赋值时致崩(类对象未初始化,this指针和成员变量不能用)
this指针-null,成员变量-红色未分配内存。

四.双击exe运行

Visual C++ Redistributable

4.1 This application failed to start because no Qt platform plugin could be initialized.

exe运行目录增加带qwindowsd.dll的platforms文件夹,platforms文件夹由windepolyqt命令打包生成。

4.2 (Qt5Core.dll)处有未经处理的异常: 请求了严重的程序退出

win10的Qt512运行目录缺少plantform等文件夹/dll会有库链接错误、图标/图片打不开等报错,可通过windeploy工具生成。

4.3 (Qt5Cored.dll)This application failed to start because no Qt platform plugin could be initialized

Debug报此错,release正常。
【QT】VS下Release报错
添加系统路径(失败)。
推测部分源库为release导致(删除Debug文件夹下库正常,或删除Qt5相关库(猜测编译相关性要求较高))。

4.4 其它电脑双击exe,msvcp140.dll报错

缺少或者未注册MSVCP140.dll。
1.尝试拷贝替换及运行(失败)。
2.安装VC_redist.x64.exe。
无法启动此程序,因为计算机中丢失MSVCP140.dll的解决方法

五.IDE安装及使用

VS2017配置QT环境(详细版)

5.1 vs2017打开上次关闭时的文件

VS 项目关闭后重新打开原先打开的文件全部关闭了,解决办法

5.2 调试时Qt类不显示值,只显示地址(运行安装qt-vsaddin)

VS2017+Qt5.9.0 调试时Qt类不显示值,只显示地址
QCreator调试 QString无法访问(调试器-CDB-去掉勾选"Use Python sumper")。

5.3 VS和vc编译器版本对应关系

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值