pybind11 工具轉換 C 介面

2021-10-24 21:15:41 字數 1293 閱讀 3379

pybind11 是乙個輕量級的 header-only 庫,可以將 c++ 型別暴露給 python,反之亦然,主要用來將 c++ 介面轉成 python。

apt install python3-dev
git clone 

git submodule update --init --recursive

cmakelists.txt:

add_subdirectory(pybind11)

target_link_libraries($ public pybind11)

pybind11_add_module($ shared src/python.cpp) # 類似 add_library

python.cpp

#include

namespace py = pybind11;

intadd

(int x,

int y)

pybind11_module

(py_sample, m)

struct

;pybind11_module

(py_sample, m)

如果包含裸指標,可以使用 def_buffer,在 python 中直接用np.array(matrix_instance, copy = false)來使用,詳見

cmake .. -dpython_executable=/***x/python3.7m

make -j8

編譯時會執行 python 獲得一些引數 ,詳見blob/master/tools/findpythonlibsnew.cmake#l113

結果會編譯出 py_sample.cpython-37m-x86_64-linux-gnu.so,字尾由變數 python_module_extension 決定,需要保證編譯和執行的機器 python minor 版本一致。

export pythonpath=so_path

import py_sample

sum= py_sample.add(1,

5)print

(sum

)some = someclass(2,

"sssss"

)print

(some.a,

" ", some.b)

python呼叫c 介面 pybind11

pybind11是乙個將c 介面轉接給python的庫,它支援c 11標準的編譯器。這裡我做了乙個簡單的實驗,主要是驗證將eigen matrixxf型別對映到numpy ndarray型別,這樣就可以在python愉快地呼叫c 函式了。完整 見 首先,python指令碼 usr bin env p...

pybind11以及打包學習

最近在看fasttext,看到使用pybind11把c 封裝了一下,然後打包後安裝,python可以直接呼叫,非常方便,有點興趣,手動試了簡單例子,本篇沒啥乾貨,簡單記錄下實現過程。c c 都是用pybind11封裝,可以直接用pip安裝即可,官方給出的入門示例十分簡單 include int ad...

python呼叫C 之pybind11入門

python呼叫c c 有不少的方法,如boost.python,swig,ctypes,pybind11等,這些方法有繁有簡,而pybind11的優點是對c 11支援很好,api比較簡單,現在我們就簡單記下pybind11的入門操作。mkdir build cdbuild cmake.cmake ...