使用pybind11将c++扩展为python

您所在的位置:网站首页 python编译为pyd 使用pybind11将c++扩展为python

使用pybind11将c++扩展为python

2023-03-10 05:39| 来源: 网络整理| 查看: 265

pybind11—python C/C++扩展编译 - 简书 (jianshu.com)

pybind11在Windows下的使用 - 酱_油 - 博客园 (cnblogs.com)

编写 Python 的 C++ 扩展 - Visual Studio (Windows) | Microsoft Learn

首先安装pybind11并在VS中配置

安装pybind11:mirrors / pybind / pybind11 · GitCode

配置:正常创建项目并添加cpp文件后,在项目的属性中设置如下:

E:\Installed\Anaconda3\include

E:\Installed\pybind11-master\include

E:\Installed\Anaconda3\libs

python37.lib

python3.lib

2.在原有的c++代码基础上添加头文件,如果需要路径传参,可以将原有main函数中的arg转化为普通函数的参数

#include int add(int x, int y) { return x + y; }

3.使用PYBIND11_MODULE宏将C++函数包装为Python模块

PYBIND11_MODULE(example, m) { m.def("add", &add, "A function which adds two numbers"); }

其中,“example”是Python模块的名称(注意此名称要和项目名称保持一致),“m”是pybind11库中的一个module_对象,m.def函数用于将C++函数add包装为Python函数,并设置函数的文档字符串。

4.编译运行生成pyd文件,将pyd文件置于python项目中即可调用(如果修改了c++的函数后,要重新生成扩展库,如果c++源代码中调用了其他库,此时在pyd目录下还生成了其他dll等文件,一并复制到python项目中,下例在loopsubd文件夹中)

import example if __name__ == "__main__": x, y = 12, 2 answer = example.add(x, y) print(f"In Python: int: {x} int {y} return val {answer}") import loopsubd.loop_subdivision as loop_subdivision if __name__ == "__main__": loop_subdivision.run("U","data/model_RZY/IOS_U_RZY.obj", "data/model_RZY/CBCT_U_RZY.obj","data/model_RZY/IOS_single_o/U/","data/model_RZY/CBCT_single_o/U/","data/model_RZY/CBCT_single_subdivision/","data/model_RZY/IOS_single_smooth/","data/model_RZY/CBCT_trans/match/","data/model_RZY/CBCT_single_trans/match/","data/model_RZY/CBCT_nricp/IOS/","data/model_RZY/CBCT_nricp/CBCT/","data/model_RZY/RZY_alveolar_bone_U.obj","data/model_RZY/bone_trans/")



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3