2017-09-07 51 views
7

我想用pybind11包裝一個C++庫,所以我可以用它與Python 3.x.pybind11包裝現有的代碼

我試過使用swig包裝代碼,但遇到了一個問題,SWIG會生成cxx文件,但不會讀取我引用的頭文件,所以有人建議我使用pybind11,因爲它比swig這是我所知道的觀點),但是我無法找到關於如何參考/構建項目的資源。

我的環境是:

  • 的Windows 10的x64
  • 狂蟒之災建立4.4.0與Python 3.6
  • 視覺工作室2015年專業版(C++安裝)

當我創建我的接口立案痛飲,我可以做一些簡單的,如:

```

%module filegdbapi 

%{ 
#include "FileGDBAPI.h" 
%} 

%include "FileGDBAPI.h" 

```

然後在痛飲構建,我可以引用-I到.h文件的位置。

我該如何在pybind11中做這樣的事情?這很簡單嗎?

爲pybind11的文檔始終顯示建築物的包裝時,你有.cpp文件。我可以使用pybind11以某種方式構建包含swig的包裝嗎?如果是這樣,你如何設置文件?

有人能指出我剛剛產生從現有的C++代碼Python包裝一個項目?

謝謝

回答

0

儘管服務於同樣的目的,SWIG和Pybind11是不同的工具。

顧名思義,SWIG(簡體包裝和接口生成器)是一種生成器工具,它使用特殊語言編寫的定義爲現有C++代碼創建Python綁定。另一方面,Pybind11是一個僅包含頭文件的C++庫,它封裝了原始的Python-C API(這是舊式的C,具有陡峭的學習曲線),並允許在現代C++中編寫Python綁定。但是你可以用手工編寫那些綁定,使用名稱空間提供的任何C++實體(函數,類,模板等)。