如何在PowerShell中永久修改cl.exe路径以解决nvcc编译错误?
解决CUDA编译时cudafe++访问违例问题并永久修改PATH路径
问题根源是默认调用的32位cl.exe不兼容CUDA编译,将64位cl.exe所在路径前置到系统PATH即可解决。以下是PowerShell中永久修改的两种方式:
用户级环境变量(仅当前用户生效,无需管理员权限)
执行以下命令,将目标路径添加到用户PATH的最前端:
$userPath = [Environment]::GetEnvironmentVariable("PATH", "User") $updatedPath = "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64;" + $userPath [Environment]::SetEnvironmentVariable("PATH", $updatedPath, "User")
系统级环境变量(所有用户生效,需管理员权限)
右键以管理员身份启动PowerShell,执行:
$systemPath = [Environment]::GetEnvironmentVariable("PATH", "Machine") $updatedPath = "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64;" + $systemPath [Environment]::SetEnvironmentVariable("PATH", $updatedPath, "Machine")
验证修改效果
- 关闭当前PowerShell窗口,重新打开VS 2022开发者PowerShell
- 执行
where cl.exe,确认第一个输出路径为目标64位cl.exe的路径 - 再次运行
nvcc hello.cu验证编译是否成功
内容的提问来源于stack exchange,提问作者Xi He
相关产品推荐
相关产品推荐

