使用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

相关推荐
沐知全栈开发24 分钟前
Perl 数据库连接
开发语言
优雅的潮叭32 分钟前
c++ 学习笔记之 shared_ptr
c++·笔记·学习
多米Domi01133 分钟前
0x3f第33天复习 (16;45-18:00)
数据结构·python·算法·leetcode·链表
SunkingYang39 分钟前
QT中使用Lambda表达式作为槽函数用法,以及捕获列表和参数列表用法与区别
c++·qt·用法·lambda表达式·捕获列表·槽函数·参数列表
freepopo1 小时前
天津商业空间设计:材质肌理里的温度与质感[特殊字符]
python·材质
森叶1 小时前
Java 比 Python 高性能的原因:重点在高并发方面
java·开发语言·python
微露清风1 小时前
系统性学习C++-第二十二讲-C++11
java·c++·学习
qq_316837751 小时前
uni.chooseMedia 读取base64 或 二进制
开发语言·前端·javascript
方圆工作室1 小时前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
小二·2 小时前
Python Web 开发进阶实战:混沌工程初探 —— 主动注入故障,构建高韧性系统
开发语言·前端·python