我有一些用 c++ 编写的代码,我试图在 python 中使用而无需再次在 python 中重写完整的代码,我正在使用 Pybind11 来构建一个 python 模块。我正在尝试通过在此处遵循本教程https://pybind11.readthedocs.io/en/stable/basics.html在 Microsoft Visual Studio 2015 中实现此目的
我在视觉工作室做了以下事情。1) 从https://codeload.github.com/pybind/pybind11/zip/master下载 Pybind11
2)解压文件
3) 在visual studio a 中开始了一个新的空C++ 项目。
4)在VC++目录>包含目录中添加了我的python解释器包含文件夹(C:/python27/include)和Pybind11(C:/Pybind11/include)
5) 在Linker>input>Additional dependencies中添加了额外的依赖(C:\Python27\libs\python27.lib)
6) 要在 Python 中使用输出文件,我需要一个 .pyd 文件,所以我在这里修改了配置属性>常规>目标扩展名:.pyd
7) 将项目默认值 > 配置类型更改为动态库 (.dll)
所以我能够构建我的项目并生成 .pyd 文件,但是在导入此模块时出现以下错误:ImportError: dynamic module does not define init function (initProject11)
我搜索了这个错误并得到了这个链接http://pybind11.readthedocs.io/en/stable/faq.html 但我找不到我的解决方案。
所以我正在寻找上述问题的解决方案。提前非常感谢。
这是我的 CPP 文件代码
#include <pybind11/pybind11.h>
int add(int i, int j) {
return i + j;
}
namespace py = pybind11;
PYBIND11_PLUGIN(example) {
py::module m("example", "pybind11 example plugin");
m.def("add", &add, "A function which adds two numbers");
return m.ptr();
}