使用Pybind11将c++第三方库编译为动态链接库

  1. 首先编写一个cpp文件,名字为"add_func.cpp",内容如下:
cpp 复制代码
#include <pybind11/pybind11.h>
#include <iostream>

namespace py = pybind11;
int add(int i, int j){
    return i+j;
}

void inadd(){
    int a, b;
    std::cin>>a>>b;
    std::cout<<a+b;
}

PYBIND11_MODULE(add_func, m){
    m.doc() = "pybind11 example plugin";
    m.def("add", &add, "A function which adds two numbers");
    m.def("inadd", &inadd, "cin and cout");
}
  1. 在终端输入:
bash 复制代码
c++ -O3 -Wall -shared -std=c++11 -fPIC $(python3 -m pybind11 --includes) add_func.cpp -o add_func$(python3-config --extension-suffix)

编译完成后,该文件夹下就会出现一个名为add_func.cpython-39-x86_64-linux-gnu.so的文件夹

  1. 此时在该文件夹下打开终端,输入python
python 复制代码
import add_func

add_func(1, 2)

此时终端就会打印出3

相关推荐
Q一件事几秒前
R语言随机森林分析显示R方和P值
开发语言·随机森林·r语言
我是华为OD~HR~栗栗呀几秒前
华为OD-Java面经-21届考研
java·c++·后端·python·华为od·华为·面试
Mr.Jessy4 分钟前
JavaScript学习第六天:函数
开发语言·前端·javascript·学习·html·1024程序员节
刺客-Andy26 分钟前
Python 第二十节 正则表达式使用详解及注意事项
python·mysql·正则表达式
努力学习的小廉1 小时前
我爱学算法之—— 分治-归并
c++·算法·1024程序员节
九皇叔叔1 小时前
Java循环结构全解析:从基础用法到性能优化
java·开发语言·性能优化
仰泳的熊猫1 小时前
LeetCode:200. 岛屿数量
数据结构·c++·算法·leetcode
sulikey1 小时前
Qt 入门简洁笔记:从框架概念到开发环境搭建
开发语言·前端·c++·qt·前端框架·visual studio·qt框架
zzzsde1 小时前
【C++】stack和queue:优先级队列的使用及底层原理
开发语言·c++
新子y1 小时前
【小白笔记】「while」在程序语言中的角色
笔记·python