欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用pybind11封裝C++實(shí)現(xiàn)的函數(shù)庫(kù)的方法示例

 更新時(shí)間:2020年02月24日 08:26:08   作者:追憶  
這篇文章主要介紹了用pybind11封裝C++實(shí)現(xiàn)的函數(shù)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

現(xiàn)有若干用C++編寫的函數(shù),為了能夠用Python調(diào)用它們,可以通過(guò)pybind11將它們封裝到一個(gè)Python模塊中,在編寫Python程序時(shí)只要導(dǎo)入該模塊便能使用這些函數(shù)。

一.實(shí)現(xiàn)步驟

  • 用C++函數(shù)實(shí)現(xiàn)函數(shù)功能;
  • 編寫頭文件,將函數(shù)的聲明包含在頭文件中;
  • 編寫pybind11封裝函數(shù);
  • 用Python編寫setup腳本;
  • 生成動(dòng)態(tài)鏈接庫(kù)pyd文件;
  • 測(cè)試函數(shù)功能。

二.代碼實(shí)現(xiàn)

1.用C++函數(shù)實(shí)現(xiàn)函數(shù)功能

//文件名: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.編寫頭文件,將函數(shù)的聲明包含在頭文件中

//文件名:functions.h
#ifndef FUNCTIONS_H 
#define FUNCTIONS_H 
 
#include <iostream> 
 
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封裝函數(shù)

//文件名:functions_wrapper.cpp
#include <pybind11/pybind11.h> 
#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.生成動(dòng)態(tài)鏈接庫(kù)pyd文件

在命令行執(zhí)行 python setup.py build_ext --inplace ,在當(dāng)前路徑下生成pyd動(dòng)態(tài)庫(kù)。

6.測(cè)試函數(shù)功能

#文件名: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

到此這篇關(guān)于用pybind11封裝C++實(shí)現(xiàn)的函數(shù)庫(kù)的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pybind11封裝C++實(shí)現(xiàn)函數(shù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)

    C語(yǔ)言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)

    qsort函數(shù)是由C語(yǔ)言提供的標(biāo)準(zhǔn)庫(kù)函數(shù), 它的實(shí)現(xiàn)思想是快速排序。這篇文章主要介紹了C語(yǔ)言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)qsort函數(shù)功能,需要的可以參考一下
    2022-10-10
  • Qt creator中項(xiàng)目的構(gòu)建配置和運(yùn)行設(shè)置的步驟

    Qt creator中項(xiàng)目的構(gòu)建配置和運(yùn)行設(shè)置的步驟

    使用 Qt Creator 集成開(kāi)發(fā)環(huán)境構(gòu)建和運(yùn)行程序是一件非常簡(jiǎn)單的事情,一個(gè)按鈕或者一個(gè)快捷鍵搞定全部,本文主要介紹了Qt creator中項(xiàng)目的構(gòu)建配置和運(yùn)行設(shè)置的步驟,感興趣的小伙伴們可以參考一下
    2021-11-11
  • c++元編程模板函數(shù)重載匹配規(guī)則示例詳解

    c++元編程模板函數(shù)重載匹配規(guī)則示例詳解

    這篇文章主要為大家介紹了c++元編程模板函數(shù)重載匹配規(guī)則示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • C++11 智能指針之shared_ptr代碼詳解

    C++11 智能指針之shared_ptr代碼詳解

    這篇文章主要介紹了 C++11 智能指針之shared_ptr的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • C++實(shí)現(xiàn)LeetCode(20.驗(yàn)證括號(hào))

    C++實(shí)現(xiàn)LeetCode(20.驗(yàn)證括號(hào))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(20.驗(yàn)證括號(hào)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • VC程序在Win32環(huán)境下動(dòng)態(tài)鏈接庫(kù)(DLL)編程原理

    VC程序在Win32環(huán)境下動(dòng)態(tài)鏈接庫(kù)(DLL)編程原理

    這篇文章主要介紹了VC程序在Win32環(huán)境下動(dòng)態(tài)鏈接庫(kù)(DLL)編程原理,包括了dll文件的原理與具體實(shí)現(xiàn)過(guò)程,對(duì)于深入掌握VC程序設(shè)計(jì)具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C語(yǔ)言中實(shí)現(xiàn)KMP算法的實(shí)例講解

    C語(yǔ)言中實(shí)現(xiàn)KMP算法的實(shí)例講解

    KMP算法即字符串匹配算法,C語(yǔ)言中KMP可以避免指針回溯從而達(dá)到高效,接下來(lái)就來(lái)總結(jié)一下C語(yǔ)言中實(shí)現(xiàn)KMP算法的實(shí)例講解
    2016-06-06
  • C++ 算法精講之貪心算法

    C++ 算法精講之貪心算法

    貪心算法(又稱貪婪算法)是指,在對(duì)問(wèn)題求解時(shí),總是做出在當(dāng)前看來(lái)是最好的選擇。也就是說(shuō),不從整體最優(yōu)上加以考慮,他所做出的僅是在某種意義上的局部最優(yōu)解
    2022-03-03
  • Matlab實(shí)現(xiàn)貪吃蛇小游戲的示例代碼

    Matlab實(shí)現(xiàn)貪吃蛇小游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Matlab實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語(yǔ)言變量類型的深入分析

    C語(yǔ)言變量類型的深入分析

    這篇文章主要介紹了C語(yǔ)言變量類型的深入分析的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評(píng)論