麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python調用C++,通過Pybind11制作Python接口

2020-02-15 23:12:41
字體:
來源:轉載
供稿:網友

我是在ubuntu系統進行實驗的,所以和window可能會有區別。

python調用C/C++有不少的方法,如boost.python, swig, ctypes, pybind11等,這些方法有繁有簡,而pybind11的優點是對C++ 11支持很好,API比較簡單,現在我們就簡單記下Pybind11的入門操作。

1. pybind11簡介與環境安裝

pybind11是一個輕量級的只包含頭文件的庫,它主要是用來在已有的 C++代碼的基礎上做擴展,它的語法和目標非常像Boost.Python,但Boost.Python為了兼容現有的基本所有的C++編譯器而變得非常復雜和龐大,而因此付出的代價是很多晦澀的模板技巧以及很多不必要的對舊版編譯器的支持。Pybind11摒棄了這些支持,它只支持python2.7以上以及C++ 11以上的編譯器,使得它比Boost.Python更加簡潔高效。

為了使用pybind11,我們需要支持C++ 11標準的編譯器(GCC 4.8以上,VS 2015 Update 3以上)以及python 2.7以上的版本,還需要下載CMake,有了這些以后,

cmake教程可以參考://www.jb51.net/article/148903.htm

    首先,我們從 pybind11 github網址:https://github.com/pybind/pybind11 上下載源碼。 cmake工程之前,要先安裝pytest pip install pytest,否則會出錯 用CMake編譯并運行測試用例:
進入pybind11的目錄,cd testscmake ..cmake --build . --config Release --target check

如果所有測試用例都通過了,說明安裝成功了。

2. python調用C++

下載編譯好pybind11之后,我們就可以開始對著官方的pybind11 Tutorial進行學習了,詳細的入門教程及語法請參考官方文檔,這里,我們簡單演示下如何編寫供python調用的C++模塊.
首先,我們編寫一個C++源文件,命名為example.cpp

#include <pybind11/pybind11.h>namespace py = pybind11;int add(int i, int j){ return i + j;}PYBIND11_MODULE(example, m){ // optional module docstring m.doc() = "pybind11 example plugin"; // expose add function, and add keyword arguments and default arguments m.def("add", &add, "A function which adds two numbers", py::arg("i")=1, py::arg("j")=2); // exporting variables m.attr("the_answer") = 42; py::object world = py::cast("World"); m.attr("what") = world;}

2.1 使用window編譯

我沒有實驗,所以可以參考別的教程

2.2 CMake的編譯方法

當然,我們也可以使用CMake進行編譯。首先寫一個CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)project(example) add_subdirectory(pybind11)pybind11_add_module(example example.cpp)

這里要求example.cpp放在和pybind11同一級的目錄下,因為我們在CMakeLists.txt中調用了同目錄pybind11和同目錄的example.cpp文件。在當前目錄下執行

cmake .make

會生成example.cpython-36m-x86_64-linux-gnu.so文件。這個文件就是python可以調用的文件。還是在相同目錄下運行python,進入python命令行

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九草网 | 午夜视频在线免费观看 | 欧美乱淫 | 毛毛片在线看 | 国产午夜电影 | 最近免费观看高清韩国日本大全 | 99影视电影电视剧在线播放 | 一本一本久久a久久精品综合小说 | 人人做人人看 | 欧美黄色看 | 羞羞电影在线观看www | 色综合久久久久综合99 | 国产精品久久久久久久不卡 | 亚洲人成网站免费播放 | 一级毛片在线免费播放 | 国产精品亚洲欧美一级在线 | 欧美videofree性欧美另类 | 欧美精品久久久久久久久久 | 日韩精品中文字幕在线观看 | 91精品国产刺激国语对白 | 一级一片免费 | 91avsese| 久久精品视频一区二区 | 欧美精品99 | 精品国产91久久久久久久妲己 | 毛片a区 | 成人店女老板视频在线看 | 欧美18一19sex性护士农村 | 一区二区三区精品国产 | 国产成人精品一区二区视频免费 | 国产日产精品一区四区介绍 | 成年人黄视频 | 亚洲情av | fc2国产成人免费视频 | 久久丝袜脚交足黄网站免费 | 久久恋 | 欧美1区2区 | chengrenzaixian| 久久久久久久久久久久网站 | 一级毛片播放 | 国产精品视频2021 |