python呼叫c 介面 pybind11

2021-10-04 17:48:01 字數 1626 閱讀 4848

pybind11是乙個將c++介面轉接給python的庫,它支援c++ 11標準的編譯器。

這裡我做了乙個簡單的實驗,主要是驗證將eigen::matrixxf型別對映到numpy::ndarray型別,這樣就可以在python愉快地呼叫c++函式了。

完整**見:

首先,python指令碼**:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

import os

path_current = os.path.dirname(os.path.abspath(__file__)

)path_build = os.path.join(path_current,

"../build"

)import numpy as np

from pybind_test import add_matrix

if __name__ ==

"__main__"

: a = np.array([[

1,1]

,[2,

2]])

b = np.array([[

2,2]

,[1,

1]])

print

(add_matrix(a,b)

)

#include

"test.h"

using mattype = eigen::matrix2f;

mattype add_matrix

(mattype a,mattype b)

c++轉接指令碼bind.cpp

#include

#include

#include

"test.h"

pybind11_module

(pybind_test,m)

cmakelists.txt:

cmake_minimum_required

(version 2.8

)project

(pybind11_test)

set(cmake_cxx_flags "-std=c++11 -wall -o2 $"

)set

(pybind11_cpp_standard -std=c++11)

find_package

(pythoninterp required)

include_directories

($/include/

)add_subdirectory

($/pybind11/

)set

(sourcefiles src/test.cpp )

pybind11_add_module

(pybind_test module bind.cpp $

)

python 呼叫c 庫介面出錯

首先,python使用c 庫傳資料的部分方法在我之前的小心得裡有 python呼叫c 的庫傳遞二級指標,希望有幫到大家。今天說一下c 的介面裡使用智慧型指標shared ptr接收資料的問題,介面都是使用的指標傳遞資料,原本的想法很簡單,直接使用傳入的指標構建shared ptr shared pt...

C 呼叫C 介面

1 system.dllnotfoundexception 型別的未經處理的異常在 test.exe 中發生 其他資訊 無法載入 dll dll ar algorithm.dll 找不到指定的模組。異常來自 hresult 0x8007007e 該問題的原因是程式無法找到ar algorithm.d...

SpringBoot呼叫python介面的實現步驟

目錄 springboot作為後端開發框架,有強大且方便的處理能力。但是作為乙個結合資料分析 前台展示的 來說,後端的資料處理模組使用python指令碼要更加方便。axefjqghe本文主要介紹如何利用springboot框架呼叫python指令碼 其實一句話來說就是利用springboot j a...