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

相关推荐
Irissgwe21 小时前
进程间通信
linux·服务器·网络·c++·进程间通信
add45a21 小时前
C++编译期数据结构
开发语言·c++·算法
setmoon21421 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
灰色小旋风21 小时前
力扣21 合并两个有序链表(C++)
c++·leetcode·链表
Laurence1 天前
Qt 前后端通信(QWebChannel Js / C++ 互操作):原理、示例、步骤解说
前端·javascript·c++·后端·交互·qwebchannel·互操作
岁岁种桃花儿1 天前
AI超级智能开发系列从入门到上天第四篇:AI应用方案设计
java·服务器·开发语言
王老师青少年编程1 天前
2026年3月GESP真题及题解(C++五级):有限不循环小数
c++·题解·真题·gesp·csp·五级·有限不循环小数
Amnesia0_01 天前
C++中的IO流
开发语言·c++
2401_891482171 天前
C++模块化编程指南
开发语言·c++·算法
2401_833197731 天前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python