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

相关推荐
谢亮_vipxieliang3 分钟前
Go defer、panic与recover核心知识点
开发语言·后端·golang
xlq2232212 分钟前
全面复习3
c++
迪康Defender16 分钟前
终端安全事后追溯能力解析:本地审计模块设计思路与落地实践
运维·开发语言·人工智能·安全·php·安全威胁分析·运维开发
郝学胜_神的一滴16 分钟前
Numpy数据处理详解 01:NumPy 从环境搭建到入门上手
人工智能·python
(Charon)17 分钟前
【C++面试】迭代器失效是什么?vector、list、map中如何避免迭代器失效
c++·算法·面试
yujunl19 分钟前
开发一个可以用APIFOX来调试的接口
开发语言
破芽35 分钟前
python知识点小结01
python
苏辰澈36 分钟前
C++自己的族谱规则:继承详解下
c语言·开发语言·c++·visualstudio
hunter19901040 分钟前
英语作文题目
开发语言