栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

微软 SDK 导致的项目编译失败哦~

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微软 SDK 导致的项目编译失败哦~

文章目录
    • 背景
    • 分析
    • 解决
    • 总结
    • 系列

简 述: 哇卡卡卡,这次又抓到了 Microsoft win10 的 ,这次还影响到了我写代码哦。项目使用 Release X86 编译会成功,而切换到 Release X64 编译会失败。

Error (active) E0147 declaration is incompatible with “BOOLEAN _BitScanForward” (declared at line 2825 of “C:Program Files (x86)Windows Kits10Include10.0.19041.0umwinnt.h”) C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.29.30133includeintrin0.inl.h 123

Error C2007 #define syntax C:Program Files (x86)Windows Kits10Include10.0.19041.0sharedminwindef.h 38
Error C2144 syntax error: ‘int’ should be preceded by ‘;’ C:Program Files (x86)Windows Kits10Include10.0.19041.0sharedminwindef.h 43
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int C:Program Files (x86)Windows Kits10Include10.0.19041.0sharedminwindef.h 43


本文初发于 “偕臧的小站”,同步转载于此。


背景

对于商业项目,素来用 Release X86 模式编译,需要调试就关闭优化,整个解决方案都是可以编译通过的。但这次需要编译一个 x64 的 dll,来调试;在本机 VS 2019 直接切换为 Release X64 ,报错如下!!!  win10 21H2  Qt 5.12.11  Visual Studio 2019


JKS 上明明是有提供的 X64 的 dll,代码即使一行不改,你还报错这么多?你是认真的麽!!! 大声哔哔。


分析

看错都是从头的第一个开始看、开始解,但这次这个错看的很颓然!!!

于是开始 从最底部的错开始看(没错,你是重点)

  • 什么错来着,语法错误???
  • 还是微软的 minwindef.h 的问题????你确定不是我们的问题??? (你相信自己代码写错的,还是相信 Microsoft 的代码写错了???)怀疑人生中

常见的基本设置都检查一遍后,(包含的头文件路径、库文件链接、C++ 17 及以上、Unicode 编码、优化关闭、多核编译开启),还是一直报这个错。问了一圈,大家都没有编译过 x64 的。

。。。蛋疼中。。。

。。。继续蛋疼中。。。

。。。持续蛋疼中。。。

难道真的是 Microsoft 的错???,思来想去,再看看此文件,再结合 Compiler Error C2007 ,目光又投投向了 minwindef.h 文件。


好吧?此刻我觉得里的文件的概率为 30%,但认为可能是你的错却是 10% 的概率;去控制中心找到 Microsoft Visual Stdio Installer 单独升级了一下 sdk (选择了一个最新的 win10,非 win11);然后重新编译一下,一把过,显示成功了。臘‍♂️,狂喜


解决

最后的解决方案是将 SDK 由 10.0.19041.0 提升到了 10.0.20348.0。呵~


事后,bc 比较下两个文件,实锤了,且错的很明显和粗糙,这下不是猜测了,晚上可以睡个安心觉了。终究还是 Microsoft 提供的库有错。


总结

最大的收获,是本次心路历程,觉得不可一世的 Microsoft SDK 不可能出错,只可能是我们的代码写的有问题。但这次破除了心里的这种“封建迷信”,亲身体验过,才知道没有什么不可能,这种感觉很奇妙。广泛点说这也算是第三次遇到微软的错误了吧[1],只是前两次都没有这么明显和直接。


系列

QtExamples

欢迎 star ⭐ 和 fork 这个系列的 C++ / QT / DTK 学习,附学习由浅入深的目录。



[1] 注释,指代:

  • 第一次 win10的20H2使用VS2019,拖曳窗口会崩溃;
  • 第二次 一个微软自带的 notepad 所导致的问题
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号