编程语言
首页 > 编程语言> > python调用C++程序,C++程序调用python程序:pybind11简单使用

python调用C++程序,C++程序调用python程序:pybind11简单使用

作者:互联网

本博客只是对链接进行补充说明。

通过git clone https://github.com/pybind/pybind11.git 下载源码,可以发现源码中并没有cpp文件,只有.h文件,也就是说pybind11将实现的代码都放进了.h文件中了。所以pybind11其实是不用进行编译安装,就可以使用的,直接通过include相关头文件就可以。

pyadd.cpp:

#include <pybind11/pybind11.h>

/***********************调用普通函数***********************/
template <typename T>
T add(T a, T b) {
  return a + b;
}

PYBIND11_MODULE(pyadd, m) {
  m.doc() = "test for add()";
  m.def("add", &add<int>, "add two number.");
  m.def("add", &add<double>, "add two number.");
  m.def("add", &add<long long>, "add two number.");
  m.attr("__version__") = "dev";
}

将pyadd编译成动态库:

g++ test.cpp -I ./ -I /home/ubuntu1/anaconda3/envs/test/include/python3.9 -L /home/ubuntu1/anaconda3/envs/test/lib -l python3.9  -fPIC -shared  -o pyadd.so 

第一个-I用于指明头文件pybind11.h位置,第二个-I指明Python.h所在位置。
这里动态库的名字为pyadd.so,那么在python程序中使用“import pyadd”进行导入,如:

  /**
   * >>> import pyadd
   * >>> pyadd.__version__
   * 'dev' 
   * >>> pyadd.add(1.1, 2.2)  
   * 3.3000000000000003 
   */

标签:__,python,程序,C++,add,pybind11,test,include,pyadd
来源: https://www.cnblogs.com/codingbigdog/p/16512831.html