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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
python实现360皮肤按钮控件示例
Feb 21 Python
wxPython窗口的继承机制实例分析
Sep 28 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
python软件都是免费的吗
Jun 18 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
利用Python函数实现一个万历表完整示例
Jan 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
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
bpython 功能强大的Python shell
2016/02/16 Python
详解python基础之while循环及if判断
2017/08/24 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
python负载均衡的简单实现方法
2018/02/04 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
利用python爬取有道词典的方法
2020/12/08 Python
python实现经典排序算法的示例代码
2021/02/07 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
经销商订货会主持词
2014/03/27 职场文书
先进单位事迹材料
2014/12/25 职场文书
班主任工作总结范文
2015/08/13 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
民事调解协议书
2016/03/21 职场文书
python requests模块的使用示例
2021/04/07 Python
电频谱管理的原则是什么
2022/02/18 无线电
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js