python调用C++之pybind11保姆级教学
2021/7/13 11:06:42
本文主要是介绍python调用C++之pybind11保姆级教学,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、环境及配置
win10、cmake 3.15.0-rc3、vs2019、pycharm2021专业版
二、具体操作
1.cmake编译前的准备操作
新建一个文件夹(这里为send)存放我们的所有文件,包括我们项目需要的所有cpp和h文件、从GitHub上下载的pybind11文件夹(下载链接:https://github.com/pybind/pybind11)、新建一个Release文件夹用来存放cmake自动生成的所有文件、新建一个CMakeLists文本文档,内容如下:
cmake_minimum_required(VERSION 3.15.0) project(Camera_Capture) //这个是cmake编译后的工程名,可以自己定义 add_subdirectory(pybind11) pybind11_add_module(Camera_Capture main.cpp CameraDS.cpp CameraDS.h) //括号内第一个为工程名,和上面一样,后面包含我们需要的所有文件
在main.cpp文件里我们可以将我们要在python里调用的功能封装成一个个函数,如下所示:
void get_frame() { //获取一帧 IplImage *pFrame = camera.QueryFrame(); cvShowImage("camera", pFrame); cvWaitKey(20); Save_img = pFrame; } //module名和cmakelists里的工程名一致,上面函数在下面要重新声明如下 PYBIND11_MODULE(Camera_Capture, m) { m.doc() = "pybind11 example plugin"; m.def("get_frame", &get_frame, "A function which Main,main(1)"); } //函数名写两遍
2.cmake编译以及VS设置
文件夹选择如下,编译器版本和电脑操作系统的位数(一般都是64位)
Configure成功后出现如下界面,再点击Generate
Release文件夹里出现了许多文件,其中一个为cmakelists里我们命名的工程文件,打开该工程(这里为Camer_Capture.sln),将vs调成Release模式,配置好需要的环境确保工程里没有报错,将Camera_Capture设为首选项,生成解决方案,如果成功会生成一个pyd文件如下所示:
3.pycharm设置
在pycharm下打开我们需要调用c++功能的python项目,点击File——Settings——Project——Python interpreter——点击右上角小齿轮(Show all)——选择当前python的编译环境——点击小图标最后一个(Show paths for the selected interpreter)——把我们刚才新建的Release文件夹下又生成的Release文件夹包含进来,如下图所示:
最后在python项目中import该模块就能调用c++里写好的功能了,如图所示:
文中有不够详细的地方欢迎各位与我交流。
这篇关于python调用C++之pybind11保姆级教学的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识