python与c++混合编码

(1)基于python引用C++脚本

》pybind11

安装

###源码安装
git clone https://github.com/pybind/pybind11.git
cd pybind11
cmake -S . -B build
cmake --build build -j 2  # Build on 2 cores
sudo cmake --install build

###pip安装
pip install pybind11

具体使用示例:

函数实现(函数带参,函数不带参,类的实现)

#include <pybind11/pybind11.h>
#include <iostream>
namespace py = pybind11;

int add(int i, int j) {
    return i + j;
}

void f(){
	std::cout<<"hello test_demo"<<std::endl;
}

class MyMath {
public:
    MyMath(int initial_value) : value(initial_value) {}

    int add(int i) {
        return value + i;
    }

private:
    int value;
};


PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin"; // 可选模块
    m.def("add", &add, "A function that adds two numbers");
    m.def("f",&f,"just for test");
    py::class_<MyMath>(m, "MyMath")
        .def(py::init<int>(), "Initialize the MyMath class with an integer value.")
        .def("add", &MyMath::add, "Add an integer to the internal value and return the result.");
}               

这里用到PYBIND11_MODULE的宏,第一个参数是你想生成的模块名字(需要与后面编译生成的名一致),第二个其实是一个pybind11::module类型,m.doc后面填对于这个模块的解释,m.def后面第一个参数是你想在python里写的函数名,第二个参数是绑定的函数地址,后面是对函数的解释可写可不写,有几个函数实现就添加几个m.def功能。接下来就是CMakeLists.txt的编写,

cmake_minimum_required(VERSION 3.10) #这个也可以不写
project(test) #定义工程名字

#如果想要指定找的python解释器,可以设置Python_ROOT_DIR路径,如下所示,可以根据whereis python来查看
set (Python_ROOT_DIR "/home/amax/anaconda3/bin/pyth
  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值