VScode 里面 Python 当中去调用 C++ 代码

VScode 里面应该安装 Python 和 C++ 的插件。

1. 第一个文件时 Cpp 配置文件 c_cpp_properties.json。(类似于CmakeList)

主要是 包含下面三个 include_path 头文件

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/home/smiao/anaconda3/envs/Gen_3DGS/lib/python3.8",
                "/home/smiao/anaconda3/envs/Gen_3DGS/lib/python3.8/site-packages/torch/include/",
                "/home/smiao/anaconda3/envs/Gen_3DGS/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

2. 对应的C++ 的简单代码,使用 PyBIND 将C++代码 转换成 Python 可以调用的 包:

#include <torch/extension.h>
torch::Tensor trilinear_interpolation(torch::Tensor feats, torch::Tensor point)
{
    return feats;
}

PYBIND11_MODULE(TORCH_EXTENSION_NAME,m){
    m.def("trilinear_interpolation",&trilinear_interpolation);
}

3. 编写 setup.py 代码将C++ 代码进行编译安装

from setuptools import setup
from torch.utils.cpp_extension import CppExtension, BuildExtension

setup(
    name="cpp_tutorial",  ## 安装的 库的名字
    version='1.0',
    # packages=['diff_gaussian_rasterization'],
    ext_modules=[
        CppExtension(
            name='cpp_tutorial',
            sources=['interpolat.cpp'] ## 对应的 Cpp 文件
        )
    ],
    cmdclass={
        'build_ext': BuildExtension
    }
)

有的 3DGS (mvsplat) 对于 Cuda 代码进行改动, 在setup.py 里面 加入了 package = [ ] 命令。 以我们上面为例,这就要求在 执行python 的环境当中 必须有一个名叫diff_gaussian_rasterization 的文件夹。 因此 必须要 先 cd 到 setup.py 所在的同级目录,然后进行安装。

4. 执行命令进行安装

pip install . ## 进入 setup.py 所在的同级目录,执行该目录
之后使用 pip list 可以查看安装的package

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值