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操作列表的常用方法分享
Feb 13 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
Python入门_浅谈for循环、while循环
May 16 Python
轻松理解Python 中的 descriptor
Sep 15 Python
Django 生成登陆验证码代码分享
Dec 12 Python
Python多层装饰器用法实例分析
Feb 09 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
Django给admin添加Action的步骤详解
May 01 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Python简单处理坐标排序问题示例
Jul 11 Python
python函数声明和调用定义及原理详解
Dec 02 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
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
用django设置session过期时间的方法解析
2019/08/05 Python
基于Pytorch SSD模型分析
2020/02/18 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
几个Shell Script面试题
2012/08/31 面试题
三八节标语
2014/06/27 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技