visual studio 2022 cuda 编程报错:找不到 Windows SDK 版本 10.0.22000.0


问题描述

  1. 已通过 visual studio installer 安装了 windows sdk 10.0.22000.0,安装路径为 E:\Windows Kits\10\
  2. 运行 cuda 示例代码时依旧报错:错误 MSB8036 找不到 Windows SDK 版本 10.0.22000.0。请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。

原因分析:

  1. 在 visual studio 窗口中单击工具=>选项=>项目和解决方案=> 生成并运行 将项目生成输出和日志文件的详细程度修改为诊断,以查看详细的生成信息定位问题。
    在这里插入图片描述

  2. 生成运行项目,报错:error MSB8036: 找不到 Windows SDK 版本 10.0.22000.0。请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。

  3. 查看底部项目生成的输出内容
    在这里插入图片描述
    ctrl+f 搜索WindowsSdkDir, 相关内容如下:

1>在 E:\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.22000.0\UAP.props (5,6) 处重新分配属性: $(WindowsSdkDir)=“\”(先前值:“E:\Windows Kits\10\”)

可以看到 WindowsSdkDir 在文件 UAP.props 中的第 5行被设置为了错误的路径,相应的代码行为:

     <!-- Force WindowsSdkDir to always be a parent to this props file -->
     <WindowsSdkDir>$([MSBUILD]::GetDirectoryNameOfFileAbove('$(MSBUILDTHISFILEDIRECTORY)', 'sdkmanifest.xml'))\</WindowsSdkDir>

这段代码是用于在 MSBuild 脚本中动态设置 WindowsSdkDir 变量的值。它通过调用 MSBuild 的静态方法 GetDirectoryNameOfFileAbove,从当前 MSBuild 文件所在的目录 ($(MSBUILDTHISFILEDIRECTORY)) 向上查找包含 sdkmanifest.xml 文件的目录,并将这个目录的路径赋值给 WindowsSdkDir。

但是不知道什么原因,导致其运行的结果是 \ , 从而导致 WindowsSdkDir 的路径错误,产生报错,找不到 Windows SDK。


解决方案:

修改 UAP.props 文件,手动设置 WindowsSdkDir 的路径(修改为本地相应的 sdk 安装路径):

     <!-- Force WindowsSdkDir to always be a parent to this props file -->
     <!-- <WindowsSdkDir>$([MSBUILD]::GetDirectoryNameOfFileAbove('$(MSBUILDTHISFILEDIRECTORY)', 'sdkmanifest.xml'))\</WindowsSdkDir> -->
     <WindowsSdkDir>E:\Windows Kits\10\</WindowsSdkDir>

最后编译运行,成功解决!

Logo

欢迎来到FlagOS开发社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐