python - 如何使用 pybind11 进行绑定?
问题描述
这是我的程序的结构:
我正在尝试将 C++ 中的程序与 python 中的 GUI 绑定。我正在使用 pybind11,我有一个用于绑定的 python_binding.cpp 文件和一些“.h”和“.cpp”以及其他目录中的方法。我包含了“.h”文件,但不知何故 python_binding.cpp 它无法识别它们。
文件 config.cpp 只有一个 void 方法,“cargar_configuracion()”,这就是它在绑定中的样子:
#include "Ejemplo/config.h"
PYBIND11_MODULE(Example, m) {
m.doc() = "Binding"; // optional module docstring
m.def("cargar_configuracion", &cargar_configuracion);
其结果是以下错误:
undefined reference to `cargar_configuracion()'
我究竟做错了什么?我应该将 .cpp 和 .h 与 binding.cpp 放在同一目录中吗?
提前致谢!
解决方案
您的 pybind11 看起来不错,这是链接器错误。它看起来像是config.cpp
在您的解决方案中的另一个项目中,并且正在单独的可执行文件中构建。您在这里有两个选择,将 config.cpp 复制到同一目录或重新配置Ejemplo
为静态库并将其指定为 python 包装器项目的属性中的依赖项。
推荐阅读
- kubernetes - kubectl can-i 命令的语法是什么?
- javascript - 如何使用 Jest/Enzyme 在功能性 React 组件中测试 lambda 函数?
- swift - 如何使用 Typealias 或 Closure 在 swift 中定义一个带有 name 参数的常量?
- php - 在自定义帖子类型中使用 ACF 复选框字段来过滤不同自定义帖子类型的结果
- android - 带有数据绑定的 Android 分页库
- uml - UML 中的模型“汽车必须由个人或公司拥有”
- node.js - 如何批量加载 Firebase EqualTo() 查询?
- php - 具有 Passport API 身份验证的 API 更新端点
- android - 启动 APK 安装程序 Kitkat
- java - 如何解决 ClassNotFoundException:com.beust.jcommander.ParameterException