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 ...