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

相关推荐
摸鱼仙人~19 分钟前
一文深入学习Java动态代理-JDK动态代理和CGLIB
java·开发语言·学习
lsnm29 分钟前
C++新手项目-JsonRPC框架
开发语言·c++·1024程序员节
晨陌y31 分钟前
从 0 到 1 开发 Rust 分布式日志服务:高吞吐设计 + 存储优化,支撑千万级日志采集
开发语言·分布式·rust
xiaojimao137 分钟前
Django在服务端的部署(无废话)
后端·python·django
world-wide-wait1 小时前
机器学习03——matplotlib
python·机器学习·matplotlib
微信api接口介绍1 小时前
微信个人发消息api
运维·服务器·开发语言·前端·网络·微信·ipad
小二·1 小时前
仓颉语言中Channel通道的深度解析:从原理到高并发实践
开发语言
给大佬递杯卡布奇诺1 小时前
FFmpeg 基本数据结构 AVPacket分析
数据结构·c++·ffmpeg·音视频
南方的狮子先生1 小时前
【数据结构】从线性表到排序算法详解
开发语言·数据结构·c++·算法·排序算法·1024程序员节
froginwe112 小时前
HTML5 Audio(音频)
开发语言