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

相关推荐
爱滑雪的码农11 分钟前
Java基础十一 流(Stream)、文件(File)和IO
java·开发语言·python
叶小鸡14 分钟前
Java 篇-项目实战-天机学堂(从0到1)-day11
java·开发语言
格林威14 分钟前
线阵工业相机:线阵图像出现“波浪纹”,是机械振动还是编码器问题?
开发语言·人工智能·数码相机·计算机视觉·视觉检测·工业相机·线阵相机
knight_9___15 分钟前
LLM工具调用面试篇5
人工智能·python·深度学习·面试·职场和发展·llm·agent
liliangcsdn24 分钟前
LLM如何辅助RAG从大量文档中筛选目标文档
开发语言·人工智能
无忧.芙桃29 分钟前
C++IO库的超详细讲解
开发语言·c++
小学生-山海32 分钟前
YOLO火焰/烟雾检测系统
python·yolo
浔川python社34 分钟前
浔川社团第一次福利数据公布
人工智能·python·deepseek
朗迹 - 张伟37 分钟前
用AI开发QT——Qt与Trae开发环境搭建
开发语言·qt·策略模式