日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python封装c++_用pybind11封装C++实现的函数库

發布時間:2025/3/15 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python封装c++_用pybind11封装C++实现的函数库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現有若干用C++編寫的函數,為了能夠用Python調用它們,可以通過pybind11將它們封裝到一個Python模塊中,在編寫Python程序時只要導入該模塊便能使用這些函數。

一.實現步驟

用C++函數實現函數功能;

編寫頭文件,將函數的聲明包含在頭文件中;

編寫pybind11封裝函數;

用Python編寫setup腳本;

生成動態鏈接庫pyd文件;

測試函數功能。

二.代碼實現

1.用C++函數實現函數功能

//文件名:add.cpp

extern "C" double add(double in1, double in2)

{

return in1 + in2;

}

//文件名:sub.cpp

extern "C" double sub(double in1, double in2)

{

return in1 - in2;

}

//文件名:mul.cpp

extern "C" double mul(double in1, double in2)

{

return in1 * in2;

}

//文件名:div.cpp

extern "C" double div1(double in1, double in2)

{

return in1 / in2;

}

2.編寫頭文件,將函數的聲明包含在頭文件中

//文件名:functions.h

#ifndef FUNCTIONS_H

#define FUNCTIONS_H

#include

using namespace std;

extern "C" double add(double, double);

extern "C" double sub(double, double);

extern "C" double mul(double, double);

extern "C" double div1(double, double);

#endif

3.編寫pybind11封裝函數

//文件名:functions_wrapper.cpp

#include

#include "functions.h"

namespace py = pybind11;

PYBIND11_MODULE(functions, m){

m.doc() = "Simple Class";

m.def("add", &add);

m.def("sub", &sub);

m.def("mul", &mul);

m.def("div", &div1);

}

4.用Python編寫setup腳本

#文件名:setup.py

from setuptools import setup, Extension

functions_module = Extension(

name = 'functions',

sources = ['add.cpp', 'sub.cpp', 'mul.cpp', 'div.cpp', 'functions_wrapper.cpp'],

include_dirs = [r'D:\software\pybind11-master\include',

r'D:\software\Anaconda\include']

)

setup(ext_modules = [functions_module])

5.生成動態鏈接庫pyd文件

在命令行執行python setup.py build_ext --inplace,在當前路徑下生成pyd動態庫。

6.測試函數功能

#文件名:test.py

import functions

print(functions.add(0.9, 3))

print(functions.sub(0.9, 3))

print(functions.mul(0.9, 3))

print(functions.div(0.9, 3))

output:

3.9

-2.1

2.7

0.3

總結

以上是生活随笔為你收集整理的python封装c++_用pybind11封装C++实现的函数库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。