pybind11包装现有代码

cod*_*000 9 c++ python pybind11

我试图使用pybind11包装一个c ++库,所以我可以在Python 3.x中使用它.

我尝试使用swig包装代码,但我遇到了一个问题,SWIG会生成cxx文件,但不会读取我引用的头文件,所以有人建议我使用pybind11因为它比swig更好(这是意见我知道),但我无法找到有关如何引用/构建项目的资源.

我的环境是:

  • Windows 10 x64
  • Anacondas使用Python 3.6构建4.4.0
  • Visual Studios 2015专业版(已安装c ++)

当我为Swig创建我的界面文件时,我可以做一些简单的事情:

```

%module filegdbapi

%{
#include "FileGDBAPI.h"
%}

%include "FileGDBAPI.h"
Run Code Online (Sandbox Code Playgroud)

```

然后在swig构建中,我可以引用-I.h文件的位置.

我如何在pybind11中做这样的事情?这么简单吗?

当你有.cpp文件时,pybind11的文档总是显示构建包装器.我可以用一种方法来使用pybind11,我可以用swig构建一个包装器吗?如果是这样,你如何设置文件?

有人能指出我只是从现有的c ++代码生成python包装器的项目吗?

谢谢

Rom*_*nko 5

尽管有相同的目的,SWIG和Pybind11是不同的工具。

顾名思义,SWIG(简化包装程序和接口生成器)是一种生成器工具,它使用以特殊语言编写的定义为现有C ++代码创建Python绑定。

另一方面,Pybind11是仅标头的C ++库,它包装了原始的Python-C API(这是旧式的C,具有很陡的学习曲线),并允许在现代C ++中编写Python绑定。但是,您可以使用pybind11::命名空间提供的任何C ++实体(函数,类,模板等)手动编写自己的绑定。