我正在尝试开发一个使用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");
...
}