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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
python中zip()方法应用实例分析
Apr 16 Python
python线程池threadpool使用篇
Apr 27 Python
Pycharm设置界面全黑的方法
May 23 Python
Django框架实现逆向解析url的方法
Jul 04 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
Django中celery执行任务结果的保存方法
Jul 12 Python
Python 面向对象之封装、继承、多态操作实例分析
Nov 21 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
python爬虫基础知识点整理
Jun 02 Python
Django正则URL匹配实现流程解析
Nov 13 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
URL Rewrite的设置方法
2007/01/02 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
smarty实现多级分类的方法
2014/12/05 PHP
Javascript开发包大全整理
2006/12/22 Javascript
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
jquery移动节点实例
2015/01/14 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
基于python历史天气采集的分析
2019/02/14 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
Python读写压缩文件的方法
2020/07/30 Python
如何基于Python按行合并两个txt
2020/11/03 Python
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
就业自荐信
2013/12/04 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
公务员年终个人总结
2015/02/12 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python