错误 MSB3721 命令 已退出,返回代码为 1 CUDA 11.6.targets ***

文章讲述了开发者在Windows服务器上遇到CUDA编译错误MSB3721的问题,原因是CUDA版本不支持显卡的计算能力。通过命令行获取详细报错和检查GPU架构,最终确定升级CUDA版本11.8来解决问题。还提到了VisualStudio编译错误时的调试技巧和可能遇到的额外问题。

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

总是遇到”错误 MSB3721 命令 已退出“这个错误,但是每次的原因都不一样,记录一下踩过的坑吧

error1:2023.12.15

错误背景:已经写好的C++工程在其他两台windows服务器上都编译通过了,但是给另外一位同事电脑配置后在visual stdio中生成解决方案一直报这个错,基本是新电脑,配置是:显卡(4090)、CUDA(11.7)。
完整报错:

严重性  代码  说明  项目  文件  行  禁止显示状态
错误  MSB3721  命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin\nvcc.exe"  
--use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64" 
-x cu -rdc=true  
-ID:\include 
-ID:\include\Common 
-ID:\include\tinyxml2 
-I"C:\Program Files\MATLAB\R2022a\extern\include" 
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include" 
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include"  -G   
--keep-dir x64\Debug  -maxrregcount=0  --machine 64 --compile -cudart static -std=c++17 -arch=native -Xcompiler="/EHsc -Zi -Ob0" -g  -D_WINDOWS -D"CMAKE_INTDIR=\"Debug\"" 
-Dfilter_EXPORTS 
-D_WINDLL 
-D_MBCS 
-DWIN32 
-D_WINDOWS 
-D"CMAKE_INTDIR=\"Debug\"" 
-Dfilter_EXPORTS -Xcompiler "/EHsc /W3 /nologo /Od /Fdfilter.dir\Debug\vc142.pdb /FS /Zi /RTC1 /MDd /GR" -o filter.dir\Debug\/src/filter.cu.obj "D:\src\filter.cu"”已退出,返回代码为 1。  
filter  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\CUDA 11.7.targets  790

这个报错基本看不出什么问题,使用命令行生成解决方案可以得到更细节的报错信息:

make --build .

然后在命令行中上面这个报错的前一行得到新的报错信息:

nvcc fatal : Unsupported gpu architecture 'compute_89'

发现是算力不匹配问题,首先查看当前CUDA版本支持的最高算例,使用命令:

nvcc --list-gpu-arch
E:\***>nvcc --list-gpu-arch
compute_35
compute_37
compute_50
compute_52
compute_53
compute_60
compute_61
compute_62
compute_70
compute_72
compute_75
compute_80
compute_86
compute_87

确实,CUDA11.7不支持compute_89,查看能够支持89的CUDA版本升级安装即可,这里我的4090显卡对应>=CUDA11.8
查询参照网站:进去直接搜索自己的显卡号找快一点
在这里插入图片描述
升级CUDA后报错消失。
tip:
Visual Stdio编译错误不清晰时,考虑用命令行编译。
参考文章:
https://zhuanlan.zhihu.com/p/646962555
https://blog.youkuaiyun.com/m0_37605642/article/details/99100924
https://blog.youkuaiyun.com/Redamancy06/article/details/125809903
重装cuda选择组件时,若已经取消选择visual stdio intergration,但安装时仍然会安装visual stdio intergration edition,并报错安装失败,则在选择安装选项时,同时取消掉Nsight VSE即可。

### 关于MSBuild错误MSB3073退出代码1的原因及解决方案 #### 错误描述 当构建项目时,如果遇到`Error MSB3073 exited with code 1`这样的错误提示,则意味着在执行自定义命令的过程中遇到了问题。这类错误通常发生在Post-build事件或其他外部调用脚本失败的情况下[^1]。 #### 原因分析 此错误可能由多种因素引起: - **路径或文件名含有特殊字符**:特别是对于Windows环境下的开发来说,任何涉及中文或者其他非ASCII字符的路径都可能导致编码转换上的麻烦,进而引发此类错误。 - **权限不足**:某些情况下,由于安全设置限制,当前用户账户缺乏足够的权限来完成特定操作也会触发该异常情况。 - **第三方工具版本不兼容**:如果构建流程依赖于其他软件组件(比如Git、NuGet等),那么这些工具的不同版本间可能存在差异,从而影响整个项目的顺利编译。 - **Visual Studio内部Bug**:尽管较为少见,但确实存在一些已知的问题存在于不同版本的IDE之中,它们可能会无故抛出这种类型的错误消息。 #### 解决方案建议 ##### 方法一:检查并修正路径和命名规则 确保所有的源码目录以及相关资源均采用英文字符表示,并且避免使用空格作为分隔符;同时确认所有使用的库文件同样遵循这一原则。这样做有助于排除因为国际化支持不当所造成的潜在风险[^2]。 ##### 方法二:验证运行环境的安全策略 尝试以管理员身份启动Visual Studio IDE,以便绕过UAC(User Account Control)机制带来的干扰;另外还需留意防火墙/杀毒程序是否会阻止必要的网络连接活动或是本地磁盘读写行为。 ##### 方法三:更新至最新稳定版SDK&Tools 定期关注微软官方发布的补丁包和技术预览版,及时安装能够修复已发现问题的新特性集合;与此同时也要注意配套插件是否已经同步进行了适配调整。 ##### 方法四:清理缓存重试 通过删除`.vs`隐藏文件夹内的临时数据结构,再配合重启计算机的方式往往能有效缓解部分难以捉摸的小毛病。此外还可以考虑利用命令行参数`/t:Clean;Rebuild`强制刷新工作区状态。 ```powershell msbuild YourSolution.sln /p:Configuration=Release /t:Clean;Rebuild ``` ##### 方法五:查阅具体日志详情 借助详细的诊断记录定位根本症结所在——打开输出窗口(Output Window),切换到“显示来自”的下拉菜单项选择“生成”,仔细阅读每一行打印出来的调试信息直至找到可疑之处为止。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值