pybind11在Windows下的使用教程


Posted in Python onJuly 04, 2019

Pybind11算是目前最方便的Python调用C++的工具了, 介绍一下在vs2019上写Python的扩展的HelloWorld

1. 去下载pybind11   https://github.com/pybind/pybind11/releases/tag/v2.3.0 

这个库只要include就可以了

2. 用vs新建一个空项目

2.1 调整输出类型为dll, 调整输出文件名为pyd

pybind11在Windows下的使用教程

pybind11在Windows下的使用教程

2.2 include python和pybind11的头文件, 我的python使用anaconda的全家桶

pybind11在Windows下的使用教程

2.3 链接 python的lib

pybind11在Windows下的使用教程

2.4 linker里添加python的lib

pybind11在Windows下的使用教程

3. 代码示例:

有两种定义函数的方法, 一种是直接定义, 另一种比较简单就是 def("函数名",&函数的引用,"说明")

Pybind非常的简单, 几乎就不用修改C++的代码

#include <pybind11/pybind11.h>

namespace py = pybind11;

int chufa(int a, int b)
{
  return a / b;
}

PYBIND11_MODULE(example, m) {
  m.doc() = "....";
  m.def("foo", []() {
    return "Hello world!";
    });
  m.def("chufa", &chufa, "just chufa");
}

4. build 得到pyd文件

pybind11在Windows下的使用教程

在python中直接import就可以了...

5. 坑:

1. 要注意编译出来的是64位还是32位的包, 建议全部在64位下编译, 否则可能会报错:

ImportError: DLL load failed: %1 is not a valid Win32 application. But the DLL's are there

2. pyd的文件名要和包名一致, 如果输出的pyd文件名称不对需要手动改过来, 否则会报错误:

ImportError: dynamic module does not define module export function 

总结

以上所述是小编给大家介绍的pybind11在Windows下的使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python函数的5种参数详解
Feb 24 Python
多版本Python共存的配置方法
May 22 Python
python装饰器实例大详解
Oct 25 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
python实现简单五子棋游戏
Jun 18 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
Python socket模块方法实现详解
Nov 05 Python
Python list与NumPy array 区分详解
Nov 06 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
python中子类与父类的关系基础知识点
Feb 02 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 #Python
Pycharm简单使用教程(入门小结)
Jul 04 #Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 #Python
Python读取xlsx文件的实现方法
Jul 04 #Python
使用python进行广告点击率的预测的实现
Jul 04 #Python
python命令行工具Click快速掌握
Jul 04 #Python
python 设置输出图像的像素大小方法
Jul 04 #Python
You might like
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
php源码的安装方法和实例
2019/09/26 PHP
JavaScript 继承使用分析
2011/05/12 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python解决鸡兔同笼问题的方法
2014/12/20 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
国贸专业个人求职信分享
2013/12/04 职场文书
少年闰土教学反思
2014/02/22 职场文书
《开国大典》教学反思
2014/04/19 职场文书
医学求职自荐信
2014/06/21 职场文书
500字小学生检讨书
2015/02/19 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
Mysql忘记密码解决方法
2022/02/12 MySQL
Python必备技巧之函数的使用详解
2022/04/04 Python