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修改Excel数据的实例代码
Nov 01 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
用Python计算三角函数之atan()方法的使用
May 15 Python
深入了解Python数据类型之列表
Jun 24 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
python反编译学习之字节码详解
May 19 Python
python入门之井字棋小游戏
Mar 05 Python
浅析Python 序列化与反序列化
Aug 05 Python
python实现画图工具
Aug 27 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
php实现微信企业转账功能
2018/10/02 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
农民工工资支付承诺函
2014/03/31 职场文书
教学改革实施方案
2014/03/31 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
中秋客户感谢信
2015/01/22 职场文书
寒山寺导游词
2015/02/03 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python