2021-02-07 乐帮网
c++
使用vs2019调试c++项目时遇到 错误 C4235 使用了非标准扩展: 不支持在此结构上使用“__asm”关键字 WechatDll D:\Demo\vkt.wx\wechatPc\WechatDll\WechatDll\Download.cpp 223
原因是VC++只支持32位内联汇编,不支持 64位平台下使用_asm的内联汇编。
结合网上的搜索结合代码找到了以下解决办法:
1、最好的方法是安装Intel C++ Compiler编译器,在vs中设置编译工具,不过这个收费,不适合长期使用,偶尔免费编译一次到还可以。
官方地址:https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-compiler.html
在vs中设置编译器过程可参考:https://blog.csdn.net/ab7253957/article/details/50622801
https://www.cnblogs.com/betterwgo/p/8145746.html
2、修改vs的汇编检查规则
此方法不推荐,针对简单内联的代码还行,使用高级语法或者嵌套时还是会有问题的,并不是所有代码都能正常编译。
可参考:https://blog.csdn.net/ayang1986/article/details/82885170
3、可以把32位编译的那部分给提取出来,然后在32平台编译,最后再在64平台下通过链接使用。
此方法需要看项目复杂程度。可以给一个简单的例子:
https://software.intel.com/sites/default/files/m/d/4/1/d/8/Introduction_to_x64_Assembly.pdf
4、最后的方法,把项目的编译设置成x86,有什么理由非得使用64平台编译呢?如果有的话可尝试以上三种方法。
以上就是来自我个人的总结。
lebang2020.cn原创,禁止转载!
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力