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中for循环是如何工作的
Jun 30 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
python3 拼接字符串的7种方法
Sep 12 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
python对验证码降噪的实现示例代码
Nov 12 Python
Python 静态方法和类方法实例分析
Nov 21 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 Python
Python xmltodict模块安装及代码实例
Oct 05 Python
scrapy头部修改的方法详解
Dec 06 Python
Python使用openpyxl批量处理数据
Jun 23 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
2.PHP入门
2006/10/09 PHP
PHP 万年历实现代码
2012/10/18 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js异或加解密效果代码
2008/06/25 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
Python中new方法的详解
2019/01/15 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
通过实例解析python描述符原理作用
2020/01/22 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
艺术节主持词
2014/04/02 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
文明班级申报材料
2014/12/24 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
MySQL自定义函数及触发器
2022/08/05 MySQL