VS C++常用错误与解决方法

news2024/11/26 8:46:34

无法找到 v143 的生成工具(平台工具集 =“v143”)

若要使用 v143 生成工具进行生成,请安装 v143 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标”。 MatchTool C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets 439

<!-- Error if toolset not found -->
<VCMessage Code="MSB8020" Type="Error" Arguments="$(_PlatformToolsetShortName);$(PlatformToolset)" Condition="'$(DesignTimeBuild)' != 'true' and '$(_ToolsetFound)' != 'true'" />

在这里插入图片描述

‘strdup’: The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strdup. See online help for details

这个编译警告信息指出 'strdup' 函数的使用已经不推荐,因为它是 POSIX 标准的一部分,而不是 ISO C 或 C++ 标准。为了保持与 ISO C 和 C++ 标准的一致性,建议使用 _strdup 函数,这是 Microsoft 特定实现的 ISO 兼容版本。

在 Microsoft Visual C++ 编译器中,_strdupstrdup 的 ISO C++ 兼容替代品。如果你的代码中使用了 strdup,并且你希望消除这个警告,你可以将其替换为 _strdup

以下是如何替换的示例:

// 使用 POSIX 标准的名称
char* myString = strdup("Hello World");

// 替换为 ISO C++ 标准的名称
char* myString = _strdup("Hello World");

请注意,_strdup 函数是 Microsoft 的扩展,可能在其他编译器或平台上不可用。如果你的代码需要在多种平台上兼容,你可能需要使用其他方法来复制字符串,例如使用 std::string 或者 std::strcpy 结合 malloc

例如,使用 std::string

#include <string>

std::string original = "Hello World";
std::string copy = original; // 复制字符串

或者使用 strcpymalloc

#include <cstring>
#include <cstdlib>

const char* original = "Hello World";
char* copy = (char*)malloc(strlen(original) + 1);
strcpy(copy, original); // 复制字符串

记得在使用 malloc 分配内存后,需要在适当的时候使用 free 来释放内存。

Windows 下Qt Creator构建错误👎 error: LNK1158: 无法运行“rc.exe” 的问题

在 Windows 操作系统中,使用 Qt Creator 配合 MSVC(Microsoft Visual C++ Compiler)构建套件进行项目编译时,若遇到错误信息 “error: LNK1158: 无法运行‘rc.exe’”,这通常意味着 Qt Creator 未能正确识别或定位到资源编译器的路径。这一问题通常是由于 Qt Creator 未被正确配置以找到 rc.exe 文件所导致的。

针对这一问题,网络上的解决方案建议将 rc.exe 和 rcdll.dll 文件复制到 Qt Creator 安装目录下的相应构建套件的 bin 文件夹中,以及 Visual Studio 安装目录下的 VC/bin 文件夹中。具体路径为:

  • *D:\Qt\Qt5.12.10\5.12.10\msvc2017\bin*
  • *C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin*

然而,当计算机上安装了多个版本的 Windows Kits 时,可能会存在多个 rc.exe 文件。在这种情况下,需要确定与当前项目兼容的特定 Windows Kits 版本,并确保 Qt Creator 能够找到与之对应的 rc.exe。

为了解决这一问题,可以采取以下步骤来定位正确的 Windows Kits 版本及其对应的 rc.exe 文件:

  1. 检查 Qt Creator 项目文件(.pro 文件)或其他相关配置文件,确认项目所需的 Windows Kits 版本。
  2. 在系统路径中搜索 rc.exe 文件,使用命令行工具(如 cmd 或 PowerShell)执行 where.exe rc.exe 命令,列出所有找到的 rc.exe 文件路径。
  3. 根据项目需求,选择正确的 rc.exe 文件路径,并将其路径添加到 Qt Creator 的构建套件配置中,或者直接复制到上述提到的 Qt Creator 或 Visual Studio 的 bin 目录下。

通过上述步骤,可以确保 Qt Creator 在构建过程中能够正确调用到匹配的资源编译器,从而解决 LNK1158 错误。在实际操作中,可能需要根据具体的环境配置和项目需求进行适当的调整。

  1. 已安装Visual Studio 2015
  2. 已安装Qt Creator
  3. Windows 10 Pro x64

查看当前Qt Creator所用的MSVC构建套件所使用的Windows Kits版本信息

打开 Qt Creator,任意新建一个工程,在套件选择的界面中可以看到这里探测到了我的MSVC2015,这里我只选择MSVC2015 64bit这个套件,如图1所示。

工程创建完毕之后,我们进行构建操作,可以发现此时显示出了错误信息 error: LNK1158: 无法运行“rc.exe”

此时我们点击 左侧的 项目,然后找到我们所使用的构建套件下的Build,并将构建环境详情展开,如图所示。

从环境变量列表中可以看到,这里有很多环境变量信息,有些环境变量是系统中已经存在的,有些是Qt Creator所添加的。这里我们着重关注 下面2个环境变量

  • WindowsSdkDir
  • WindowsSDKVersion

在我的计算机中,环境变量 WindowsSdkDir 对应的是 C:\Program Files (x86)\Windows Kits\10\ ,表示当前的WindowsSDK的目录,环境变量WindowsSDKVersion 对应的是 10.0.18362.0\ ,从这连个内容我就可以知道Qt 在这个构建套件下所需要的rc.exe文件应该是 **C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\ ,**我们进入这个目录查看一下,如图所示。

这里有一个arm、arm64和x86、x64,这里我们只需要关注x86和x64即可,例如这里我们工程用的是MSVC2015 x64构建套件,所以我们进入到x64目录下找到rc.exe和rcdll.dll这俩文件,将其拷贝到

[QtCreator安装目录]\[Qt版本号]\[构建套件]\bin 这个目录下即可,我的电脑上的对应目录是 D:\Applications\QtCreator\5.12.2\msvc2015_64\bin ,如图所示,是拷贝后的结果。

拷贝完成之后,再次回到我们的Qt Creator中进行构建,就可以发现此时已经OK了。

总体思路

  1. 从Qt Creator工程的环境变量中定位 Windows Kits版本信息
  2. 复制对应的rc和rcdll到Qt目录下对应的构建套件的bin目录中

错误 C2102 “&”要求左值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS 开发知识:一个基于 emitter 封装了一个便捷的 EventBus 事件通知

引言 鸿蒙提供提供了在同一进程不同线程间&#xff0c;或同一进程同一线程内&#xff0c;发送和处理事件的能力&#xff0c;包括持续订阅事件、单次订阅事件、取消订阅事件&#xff0c;以及发送事件到事件队列的能力。 ohos.events.emitter Emitter 封装前使用&#xff1a;e…

红黑树插入数据的底层详解

红黑树定义 1. 每个结点不是红色就是黑色 2. 根节点是黑色的 3. 如果一个节点是红色的&#xff0c;则它的两个孩子结点是黑色的 4. 对于每个结点&#xff0c;从该结点到其所有后代叶结点的简单路径上&#xff0c;均 包含相同数目的黑色节点 5. 每个叶子结点都是黑色的(此…

c语言---循环 、判断基础知识详解

if语句 else离最近的if语句结合。 if语句题目 //1. 判断一个数是否为奇数 //2. 输出1 - 100之间的奇数 #include <stdio.h> int main() {int n 0;scanf("%d", &n);if (n % 2){printf("奇数\n");}else{printf("不是奇数\n"…

LeetCode 2813.子序列最大优雅度

给你一个长度为 n 的二维整数数组 items 和一个整数 k 。 items[i] [profiti, categoryi]&#xff0c;其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。 现定义 items 的 子序列 的 优雅度 可以用 total_profit distinct_categories^2 计算&#xff0c;其中 t…

VScode如何调试

调试 1.打断点 1.点击调试按钮 3.点击下拉选择环境node&#xff0c;点击绿三角选择输入调试的命令&#xff08;具体命令查看package.json中scripts中的哪一个命令和运行的文件&#xff09;&#xff0c;点击右边的设置&#xff08;可以直接跳下面第八步&#xff01;&#xff…

【2024最新精简版】SpringCloud面试篇

文章目录 SpringBoot和SpringCloud什么区别 ?你们项目为什么要使用微服务Spring Cloud 5大组件有哪些&#xff1f;&#x1f44d;什么是微服务?微服务的优缺点是什么?你们项目中微服务之间是如何通讯的? &#x1f44d;服务注册和发现是什么意思&#xff1f;Spring Cloud 如何…

LeetCode题练习与总结:被围绕的区域--130

一、题目描述 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O 组成&#xff0c;捕获 所有 被围绕的区域&#xff1a; 连接&#xff1a;一个单元格与水平或垂直方向上相邻的单元格连接。区域&#xff1a;连接所有 0 的单元格来形成一个区域。围绕&#xff1a;如果…

使用pytest-xdist实现分布式APP自动化测试

不知道大家有没有遇到这样一种情况&#xff0c;实际工作中&#xff0c;app自动化测试的用例可能是成百上千条的&#xff0c;如果放在一台机器上跑&#xff0c;消耗的时间非常久&#xff0c;那能不能使用分布式的来跑测试用例呢&#xff1f;比如有1000条测试用例&#xff0c;给A…

骨传导耳机品牌排行前五名揭晓:精选5款音质卓越、佩戴舒适的优选产品!

骨传导耳机是目前非常热门的蓝牙耳机&#xff0c;有很多人都想去尝试&#xff0c;但又很多消费者再入手后&#xff0c;都出现了佩戴不舒服&#xff0c;音质刺耳等问题&#xff0c;作为一位拥有十多年经验的数码测评师&#xff0c;我有必要提醒大家&#xff0c;尽管市面上各种骨…

inpaint下载安装2024-inpaint软件安装包下载v5.0.6官网最新版附加详细安装步骤

Inpaint软件最新版是一款功能强大的图片去水印软件&#xff0c;这款软件拥有强大的智能算法&#xff0c;能够根据照片的背景为用户去除照片中的各种水印&#xff0c;并修补好去除水印后的图片。并且软件操作简单、界面清爽&#xff0c;即使是修图新手也能够轻松上手&#xff0c…

什么牌子的灯好不伤眼?带你了解什么灯对眼睛伤害最小

眼睛是人类获取信息最重要的感官器官之一&#xff0c;而近视则会导致视力模糊&#xff0c;进而影响学习效果和生活品质。因此&#xff0c;什么灯对眼睛伤害最小成为许多人迫切寻找的目标。本文将为各位家长解答目前许多家长选择为孩子保护视力的产品——护眼台灯。护眼台灯以其…

如何打开mobi文件?两个步骤解决

打开MOBI格式的电子书&#xff0c;其实相当简便。NeatReader作为一个兼容多格式多系统的电子书阅读器&#xff0c;对MOBI格式的支持自然不在话下。下面是使用NeatReader阅读MOBI文件的步骤&#xff1a; 第一步&#xff1a;下载并安装NeatReader&#xff1a; 首先&#xff0c;你…

如何利用Python处理站点数据、格点观测数据、再分析ERA5;GLDAS、遥感数据、水文数据、气象数据、陆面模式数据、气候变化数据等

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台&#xff08;x86和arm&#xff09;&#xff0c;Python简洁的语法和对动态输入的支持&#xff0c;再加上解释性语言的本质&…

ECharts 蓝色系-荧光图标折线图01案例

ECharts 蓝色系-荧光图标折线图01案例 图表意义 本折线图案例展示了一周内不同路线的使用情况或数据统计。通过折线的上升和下降&#xff0c;可以直观地观察到每条路线的流量或数据变化趋势&#xff0c;从而进行分析和决策。 效果预览 效果图展示不同路线的数据统计和个性化…

下载依赖有问题(只有自己有问题)

有缓存&#xff01; 删除node_modules 命令&#xff1a;npm run clean 前提是该项目支持这个命令&#xff1a;package.json > scripts 内有 clean 例如下面这个就没有clean&#xff0c;则直接手动删除 清除缓存 npm cache clean --force pnpm store prune删除lock文件 …

Linux——ansible剧本

剧本&#xff08;playbook&#xff09; 现在&#xff0c;可以写各种临时命令 但如果&#xff0c;想把所有步骤&#xff0c;集合到一起&#xff0c;写到同一个文件里 让ansible自动按顺序执行 就必须要写“剧本” 剧本里面&#xff0c;也可以写临时命令&#xff0c;但是剧本…

AI辅助写作:如何高效完成毕业论文

写作这件事一直让我们从小学时期就开始头痛&#xff0c;初高中时期800字的作文让我们焦头烂额&#xff0c;一篇作文里用尽了口水话&#xff0c;拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业&#xff0c;结果毕业前的最后一道坎拦住我们的是毕业论文&#xff0c;这玩意不…

Nature发文介绍使用ChatGPT帮助学术写作的三种方式

文章链接&#xff1a;https://www.nature.com/articles/d41586-024-01042-3 一、介绍 这篇文章是由Dritjon Gruda撰写的&#xff0c;讨论了生成性人工智能&#xff08;AI&#xff09;在学术写作、编辑和同行评审中的三种应用方式。Gruda认为&#xff0c;尽管学术界对聊天机器…

opengauss安装postgis插件(Docker部署)

opengauss安装postgis插件 当然不管是安装opengauss还是给其安装插件,对其官方文档的解读是至关重要的,opengauss官网 点击最新开发版本进入快速入门链接。则可查看具体的各种指南。本次我使用的是极简版-容器安装。 下载源码并修改版本号 从官网的配置准备中可以发现,我们…

?? 与 || 在 JavaScript 中的微妙差别

起初&#xff0c;你可能会认为你可以随意替换任何你喜欢的人&#xff0c;对吗&#xff1f; 错误。他们并非你所想的那样。 我们必须一劳永逸地学习这个区别&#xff0c;以避免日后出现痛苦的错误。 这个差别是什么&#xff1f; 这是他们对待真值和假值的令人难以置信的对比。这…