我正在尝试开发一个使用Pybind11将C ++函数与python集成的项目。我对C ++非常熟悉,但对Python却不是。我有为C ++项目开发的以下格式的文件。

C ++的输出为:cppproject.pyd

我要集成的C ++函数:int add(int i,int j)

Pybind11模块:PYBIND11_MODULE(example,m){....}

我有我需要的所有文件。但是我现在需要在Python中运行add函数,并且我对如何编写代码感到困惑。

我试过了

from cppproject import example
example.add(1, 2)

但这引发了如下异常:

dynamic module does not define module export function (PyInit_cppproject)

python代码在哪里出错? 如果有帮助,这是我的C ++代码:

#include <Python.h>
#include <pybind11/pybind11.h>


int add(int i, int j) {
return i + j;
}


 PYBIND11_MODULE(example, m) {

m.def("add", &add, "A function which adds two numbers");

}

此文件的输出为.pyd格式,以便于python集成。 编辑:顺便说一下,我正在尝试同时运行C ++和Python项目,作为Visual Studio中的一种解决方案。

分析解答

如果您将out-file命名为example.pyd,则应该可以使用。

然后:

from example import add

或者:

PYBIND11_MODULE(cppproject, m) {

auto example = m.def_submodule("example");

...

}