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绘图库Matplotlib的安装
Jul 03 Python
Python中使用Inotify监控文件实例
Feb 14 Python
Python制作CSDN免积分下载器
Mar 10 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
python如何爬取动态网站
Sep 09 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 Python
Python实现归一化算法详情
Mar 18 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
印度网上药店:1mg
2017/10/13 全球购物
游戏商店:Eneba
2020/04/25 全球购物
师范应届生语文教师求职信
2013/10/29 职场文书
应用数学专业求职信
2014/03/14 职场文书
大学毕业生自我评价
2015/03/02 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
人事任命通知书
2015/04/21 职场文书
经费申请报告范文
2015/05/18 职场文书
实习证明格式范文
2015/06/16 职场文书
答谢酒会主持词
2015/07/02 职场文书
python执行js代码的方法
2021/05/13 Python
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python