栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

code::blocks编译生成pyd(pybind11)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

code::blocks编译生成pyd(pybind11)

code::blocks编译生成pyd(pybind11)

由于visual studio的openmp还停留于低版本的状态,很多命令不支持,因此题主采用code::blocks编译pyd(pybind)
pybind库的安装
两个办法
方法一
去github下载文件夹即可
https://github.com/pybind/pybind11
方法二
采用虚拟环境下载pybind
先在pycharm内安装一下虚拟环境库virtualenv(pycharm无法下载则直接cmd或者anaconda prompt中pip install virtualenv)

然后在想要下载pybind库的文件夹中进入cmd命令
virtualenv pybindEnv

cd pybindEnv
.Scriptsactivate
最后就是按照 -i包括后面的网址只是把下载源切到国内网址

.Scriptspip.exe install pybind11 -i https://pypi.tuna.tsinghua.edu.cn/simple/
完成上述步骤后pybind11已经下载完成
code::blocks链接
创建dynamic link library项目

输出目录和工程输出目录后面可以修改
项目-属性-构建目标

这里输出的文件名必须和项目代码中的函数参数一致
如下是openmp测试代码
#include
#include
int add(int i, int j) {

#pragma omp parallel
{
int num_threads=omp_get_num_threads();
#pragma omp master
{

if (num_threads>=2)
printf(“openmp supports”);
}
}
return i + j;
}

PYBIND11_MODULE(exam, m) {
m.doc() = “pybind11 example plugin”; // optional module docstring
m.def(“add”, &add, “A function which adds two numbers”);
}

这里面PYBIND11_MODULE(exam, m) 中第一个参数为exam,输出的pyd文件名字必须和这个参数一致
库文件链接设定如下
我是采用anaconda,建议诸位也采用这个- -
设置-编译器进行具体设定

我这里还链接了openmp



完成上述设置后点击build就会生产pyd文件,我们直接放到python工作路径给python调用即可

关于code::blocks的初始化配置和下载、汉化等请自行搜索教程,这里不多介绍
总结
能看到这个文章的朋友应该是想用code::blocks来编写CPP项目,并给python调用。
题主参考pybind(visual studio)的编译过程尝试用code::blocks实现的pyd编译,由于题主非科班出生,因此相关描述可能不太严谨,请见谅!
关于pybind的相关函数和语法暂时不做介绍,相关的教程和文档已经很多了,请自行学习,本质上和matlab混合C++/C编程类似,一通百通,不多展开!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/948272.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号