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
.\Scripts\activate
最后就是按照 -i包括后面的网址只是把下载源切到国内网址
.\Scripts\pip.exe install pybind11 -i https://pypi.tuna.tsinghua.edu.cn/simple/
完成上述步骤后pybind11已经下载完成
code::blocks链接
创建dynamic link library项目
输出目录和工程输出目录后面可以修改
项目-属性-构建目标
这里输出的文件名必须和项目代码中的函数参数一致
如下是openmp测试代码
#include <pybind11/pybind11.h>
#include<omp.h>
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编程类似,一通百通,不多展开!