当前位置: 首页 > news >正文

diff-gaussian-rasterization: Visual Studio 2019 编译流程记录

打算学一下3D高斯可微光栅化渲染的代码,手头C++编译器只有MSVC,大费周折用VS 2019尝试编译运行。由于过程遇到了许多问题,觉得挺有意义,特此记录。

背景说明: 该流程尤其适用于先装了CUDA,然后才装了VS的情况
环境配置:Visual Studio 2019,CUDA 11.8,libtorch 2.0.1,Python 3.10 (此处所列仅为本文使用版本,其他对应的版本同样适用)
任务目标:在VS 2019中引入libtorch和CUDA,编译可微高斯代码

一、安装CUDA 11.8

注:因为3D GS官方用的CUDA 11.8,遂同用。

几篇卸载并重新安装不同版本CUDA的方法帖:

卸载CUDA 帖子1
卸载CUDA 帖子2
卸载CUDA 帖子3
卸载CUDA 帖子4

总结:只要记住通过“控制面板-卸载”或者“设置-应用-搜索CUDA”把CUDA相关的都卸载就行,Nsight删不删无所谓。然后环境变量/系统变量Path中CUDA的删掉。最后检查NVIDIA GPU Computing Toolkit文件夹是否清空,或运行nvcc -V检查。

二、安装 Visual Studio 2019

注:本来打算用VS 2022,但过程中报错,误以为MSVC 143不适配CUDA 11.8,遂安装2019。不过后来发现并非如此,2022只要切Windows SDK应该也行。

(1)现在Visual Studio官网无法安装旧版本的VS了(我真服了),幸好下面这个帖子给了VS 2019 installer的链接。

VS 2019 installer下载

装上之后只要选了“使用C++的桌面开发”就行

二、配置libtorch环境

注:libtorch是PyTorch的C++前端库;能让在C++环境下调用torch库及数据结构(如Tensor)

(1)下载libtorch。现在Pytorch官网同样不能直接下旧版本的libtorch(真的很烦),但再次幸好下面这个帖子给了不同平台不同版本的libtorch下载链接。

libtorch各版本下载

(2)网上有许多手动给VS解决方案配libtorch的帖子,不过PyTorch官方给了一个用于VS的libtorch项目模板的链接:

VSIXTorch下载
VSIXTorch Demo

下载完成后,看Demo视频即可完成libtorch配置

(3)更改Windows SDK

上一步配置好后,建立新项目,模板里有一个libtorch的示例cpp文件。编译运行失败,提示找不到Windows SDK 10.018362.0。

解决: 此处证明不是VS 2022的原因。不要慌,找到 “解决方案—右键属性”,将Windows SDK版本改为10.0(最新安装的版本),C++语言标准改为ISO C++ 17。

再次编译,示例代码已能成功运行。

三、配置CUDA环境

注:CUDA环境配置帖子

(1)添加CUDA include目录。解决方案—右键属性—C/C++—附加包含目录—添加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include.(其实这时已经添加好了,因为VSIX)

(2)添加CUDA lib目录。解决方案—右键属性—链接器—常规—附加库目录—添加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64.

(3)添加lib依赖项。因为上一步中添加了lib目录,所以依赖项只需添加文件名即可。

·管理员权限打开cmd(ctrl+shift+enter)— cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64 — 运行命令 DIR *.lib /B > res.txt — 这个命令会生成包含所有lib文件名的res.txt
·解决方案—右键属性—链接器—输入—附加依赖项—将res.txt的内容复制到此处.

(4)添加bin(dll)。一般在安装CUDA时这已经弄好了,如果没有就在系统变量的Path加上C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin.

四、VS编译.cu文件并实现高亮

注:由于CUDA相关的代码(如核函数)必须在.cu中由nvcc编译,而不能直接放在.cpp文件中;同时由于先安装了CUDA,目前VS无法编译.cu文件(项目模板也没有CUDA Runtime),遂进行该步操作。

(1)先按如下教程操作

VS自定义生成依赖项没有CUDA

(2)解决方案—右键生成依赖项—生成自定义—选择CUDA 11.8

(3)Source Files—新建cpp文件—直接将扩展名改为.cu—编写CUDA C/C++测试代码—编译

(4).cu文件高亮显示。

·VS菜单栏—工具—选项—文本编辑器—文件扩展名—输入.cu—编辑器选择“Microsoft Visual C++”

·创建一个usertype.dat文件—在文件中添加CUDA关键字(如__global/host/device__,dim3)—将该文件复制到以下目录~\Microsoft Visual Studio...\Common7\IDE\—重启VS.

五、安装并配置Python

注:完成上述内容后,准备加入diff-gaussian-rasterization的代码;先看准了rasterize_points.h这个文件,结果刚加上<torch/extension.h>就报错:找不到Python.h。遂安装Python

(1)选择与CUDA版本和libtorch版本(同Pytorch)兼容的Python版本,此处为3.10

Python/Pytorch/CUDA版本对应

(2)参考前文,配置Python的include、libs及各lib依赖项。这时编译仍然报错,找不到python310_d.lib

原因:VS目前解决方案配置Debug/x64,而之前安装Python没有选择安装Debug版本库文件

(3)调整解决方案配置Release/x64,并参照前文重新配置CUDA和Python环境;编译。

此时编译结果可能成功,但也可能提示找不到dll。目前尚没搞清楚为什么会找不到,但可以hack,直接把这些dll复制到项目的Release文件夹下即可。

六、解决其余小bug

(1)继续将rasterize_points.cu复制过来,编译报错:无法解析的外部符号

原因:不要慌,这只是因为Rasterizer类的函数没有实现,编译器找不到。继续将raterizer_impl等文件复制过来就行。

(2)添加glm。由于用到glm库,将glm文件路径复制到解决方案的include(因为只有头文件)

glm

http://www.jsqmd.com/news/385298/

相关文章:

  • 题解:洛谷 P11542 [Code+#5] 有人吗?
  • Spark大数据处理:技术、应用与性能优化【2.1】
  • 【AI大模型技术】深度解析DPO和RLHF,你还分不清吗?
  • 排序算法衍生问题
  • google-glog编译
  • SVG 在线编辑器:设计自由,创意无限
  • Vue3 条件语句
  • JavaScript 错误处理指南
  • 8、SequenceInputStream的源码和Vector.class的一些函数说明(windows操作系统,JDK8)
  • 2025年主流项目管理工具对比:10款 Jira 替代方案清单
  • Spring AI学习
  • 2026最新口碑协商律所贷款/信用卡分期协商机构榜单(负债人实测版) - 代码非世界
  • 大模型技术:深入理解预训练与微调,为什么需要预训练,什么是微调?
  • 2026年口碑优选:哪些保健品品牌值得信赖?保健饮品/养胃颗粒/保健品,保健品品牌哪个好 - 品牌推荐师
  • AI Agent智能体解析-7种Agent框架对比!
  • Vue.js 起步指南
  • 使用 TypeScript 的指数退避机制包装异步请求
  • 深入研究大数据领域 Hadoop 的 HBase 数据库
  • Games202(一):实时阴影(Real-time Shadows)
  • 苹果充值卡回收常见问题解答 - 京顺回收
  • Go基础:Go的函数和方法详解
  • 负债逾期别乱投医!2026最新贷款+信用卡分期协商机构口碑榜单,实测靠谱助你上岸 - 代码非世界
  • 2025金融AI智能体投资决策的落地趋势:架构师的判断与建议
  • SVG 文本:图形与文本的完美融合
  • MongoDB 更新文档
  • SQL RIGHT JOIN
  • AI原生应用领域微服务集成的服务发现机制
  • Java 发送邮件
  • JavaScript Navigator
  • C 标准库 - `<errno.h>`