vs C++ + MFC项目统一升级升级目标:使用C++20标准 使用最新windowsSDK 使用最新平台工具集(vs2019)
2021/12/11 7:21:35
本文主要是介绍vs C++ + MFC项目统一升级升级目标:使用C++20标准 使用最新windowsSDK 使用最新平台工具集(vs2019),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、vs C++ + MFC项目统一升级
升级目标:使用C++20标准 使用最新windowsSDK 使用最新平台工具集(vs2019)
2、无法匹配对应的MFC库
解决方案:vs2019安装中勾选 支持 v142的MFC库
3、解决“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题
https://blog.csdn.net/LYJ_viviani/article/details/51487877
4、解决 “错误 D8016 “/Gm”和“/std:c++20”命令行选项不兼容”
C/C++ -->代码生成---->"启用最小重新生成" 选择 否
5、bcg库编译
解决方案: 找到 BCGControlBar Pro 28 版本的库,升级到 v142 在做编译
6、函数接口隐式转换检查报错
使用如下方式:
dynamic_cast :有父子继承关系的强转
reinterpret_cast : 指针之间的强转
static_cast :基本数据类型强转 static_cast<int>()
const_cast :强制转换去除 const修饰
7、 双目运算符 ? :
条件表达式的result类型要保持一致
8、bcg库 BCGCBProInc.h 中 设置了自动链接bcg库的操作,在编译其他依赖bcg库时要在
预处理器定义中 加入 _BCGCB_DISABLE_AUTOLINK_
9、error LNK2026: 模块对于 SAFESEH 映像是不安全的
解决方法:
1.打开该项目的“属性页”对话框。
2.单击“链接器”文件夹。
3.单击“命令行”属性页。
4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。
10、错误 C3848 具有类型“const youth_GeoAlgorithm::setcmp”的表达式会丢失一些 const-volatile 限定符以调用“bool youth_GeoAlgorithm::setcmp::operator ()(const GIS_DoublePoint &,const GIS_DoublePoint &)”
解决方法: 在仿函数setcmp::operator ()(const GIS_DoublePoint &,const GIS_DoublePoint &) 后面加入const 修饰
11、 error C2039: “DOMDocument”: 不是“MSXML2”的成员
解决方法:
CreateInstance(__uuidof(MSXML2::DOMDocument),NULL ,CLSCTX_INPROC);
改为
CreateInstance(__uuidof(MSXML2::DOMDocument60 ),NULL ,CLSCTX_INPROC);
12、严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “std::pair<CGisVetex *,CGisPath *> std::make_pair<CGisVetex*,CGisPath*>(_Ty1 &&,_Ty2 &&) noexcept(<expr>)”: 无法将参数 1 从“CGisVetex *”转换为“_Ty1 &&” ToolCabinet E:\jinhua_diaodu_Proj\DLL_PROJECT\ToolCabinet\DijkstraAlgorithm.cpp 121
解决方案:
m_Paths.insert(make_pair<CGisVetex*, CGisPath*>(reinterpret_cast<CGisVetex*&&>(pVetex),reinterpret_cast<CGisPath*&&>(pNewPath)));
13、c4596成员中的非法限定名
解决方案:
举例:CDevExtProp& CDevExtProp::operator = (const CDevExtProp &Temp);
定义的成员函数已经在类里了,所以不需要再次声明作用域,把CDevExtProp::去掉即可。
14、严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2679 二元“=”: 没有找到接受“CIndMachine”类型的右操作数的运算符(或没有可接受的转换) ModelCore E:\jinhua_diaodu_Proj\DLL_PROJECT\ModelCore\IndMachine.cpp 99
解决方案: 申明和函数返回类型一样的变量做赋值,然后在转换成*this
15、严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “INT_PTR CArray<CModelShape::CPoint,CModelShape::CPoint &>::Add(ARG_TYPE)”: 无法将参数 1 从“CModelShape::CPoint_tpe<float>”转换为“ARG_TYPE” ModelCore E:\jinhua_diaodu_Proj\DLL_PROJECT\ModelCore\Shunt.cpp 77
解决方案: 构造临时变量赋值,在传入Add函数中
16、严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2653 “MSXML2”: 不是类或命名空间名称 ManagePowerGridLevel E:\jinhua_diaodu_Proj\DLL_PROJECT\cimsvgImport\ManagePowerGridLevel\code\CommonFuncs.h 25
解决方案:
#ifndef _MSXML14_
#define _MSXML14_
#import <msxml6.dll>
using namespace MSXML2;
#endif
17、严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2783 “void std::swap(_Ty &,_Ty &) noexcept(<expr>)”: 未能为“_Enabled”推导 模板 参数 AutoRouting C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\utility 81
18、error LNK2019: 无法解析的外部符号 __vsnwprintf,该符号在函数 "long __stdcall StringVPrintfWorkerW...
答案就是链接:legacy_stdio_definitions.lib 这个lib即可
这篇关于vs C++ + MFC项目统一升级升级目标:使用C++20标准 使用最新windowsSDK 使用最新平台工具集(vs2019)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)