最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用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++編寫(xiě)的函數(shù),為了能夠用Python調(diào)用它們,可以通過(guò)pybind11將它們封裝到一個(gè)Python模塊中,在編寫(xiě)Python程序時(shí)只要導(dǎo)入該模塊便能使用這些函數(shù)。

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

  • 用C++函數(shù)實(shí)現(xiàn)函數(shù)功能;
  • 編寫(xiě)頭文件,將函數(shù)的聲明包含在頭文件中;
  • 編寫(xiě)pybind11封裝函數(shù);
  • 用Python編寫(xiě)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.編寫(xiě)頭文件,將函數(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.編寫(xiě)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編寫(xiě)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++ vector類的模擬實(shí)現(xiàn)方法

    C++ vector類的模擬實(shí)現(xiàn)方法

    這篇文章主要介紹了C++ vector類的模擬實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C++按位異或運(yùn)算符的使用介紹

    C++按位異或運(yùn)算符的使用介紹

    本篇文章對(duì)C++按位異或運(yùn)算符的使用進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • c++ 排查內(nèi)存泄漏的妙招

    c++ 排查內(nèi)存泄漏的妙招

    這篇文章主要介紹了c++ 如何用輔助類排查內(nèi)存泄漏,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-03-03
  • Qt利用DOM類實(shí)現(xiàn)讀取xml文件

    Qt利用DOM類實(shí)現(xiàn)讀取xml文件

    Dom(Document Object Model,即文檔對(duì)象模型)能把XML文檔轉(zhuǎn)換成應(yīng)用程序可遍歷的樹(shù)形結(jié)構(gòu),這樣便可以隨機(jī)訪問(wèn)其中的節(jié)點(diǎn)。本文將詳細(xì)講講實(shí)現(xiàn)的方法,需要的可以參考一下
    2022-06-06
  • C++ 內(nèi)存分區(qū)模型的使用(代碼區(qū)、全局區(qū)、棧區(qū)、堆區(qū)、new)

    C++ 內(nèi)存分區(qū)模型的使用(代碼區(qū)、全局區(qū)、棧區(qū)、堆區(qū)、new)

    這篇文章主要介紹了C++ 內(nèi)存分區(qū)模型的使用(代碼區(qū)、全局區(qū)、棧區(qū)、堆區(qū)、new),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • opencv3.0識(shí)別并提取圖形中的矩形的方法

    opencv3.0識(shí)別并提取圖形中的矩形的方法

    這篇文章主要介紹了opencv3.0識(shí)別并提取圖形中的矩形的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • C語(yǔ)言中的參數(shù)傳遞機(jī)制詳解

    C語(yǔ)言中的參數(shù)傳遞機(jī)制詳解

    這篇文章主要介紹了C語(yǔ)言中的參數(shù)傳遞機(jī)制,C語(yǔ)言中函數(shù)參數(shù)的傳遞有:值傳遞、地址傳遞、引用傳遞這三種形式。下面我們?cè)敿?xì)探討下
    2017-04-04
  • C++ 遍歷某個(gè)文件夾下所有文件的方法步驟

    C++ 遍歷某個(gè)文件夾下所有文件的方法步驟

    這篇文章主要介紹了C++ 遍歷某個(gè)文件夾下所有文件的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C語(yǔ)言實(shí)現(xiàn)繪制貝塞爾曲線的函數(shù)

    C語(yǔ)言實(shí)現(xiàn)繪制貝塞爾曲線的函數(shù)

    貝塞爾曲線,又稱貝茲曲線或貝濟(jì)埃曲線,是應(yīng)用于二維圖形應(yīng)用程序的數(shù)學(xué)曲線。本文將利用C語(yǔ)言實(shí)現(xiàn)繪制貝塞爾曲線的函數(shù),需要的可以參考一下
    2022-12-12
  • C++ Boost Intrusive庫(kù)示例精講

    C++ Boost Intrusive庫(kù)示例精講

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11

最新評(píng)論

板桥市| 扶沟县| 金溪县| 台湾省| 苍山县| 郁南县| 阿鲁科尔沁旗| 安阳县| 汉寿县| 保靖县| 安吉县| 铜陵市| 鄂州市| 凭祥市| 云南省| 肇源县| 东乡| 新绛县| 甘洛县| 江源县| 山阴县| 尖扎县| 桃江县| 探索| 淮滨县| 孟津县| 安陆市| 余姚市| 盈江县| 海门市| 吴堡县| 成安县| 绩溪县| 平顺县| 察隅县| 普兰店市| 广南县| 呼图壁县| 徐州市| 湖北省| 射洪县|