如何使用 pybind11 进行绑定?
How to bind using 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 放在同一目录中吗?
提前致谢!
Change your code from:
bViewResult = QtWidgets.QPushButton('View Results', self)
bViewResult.clicked.connect(self.openCSV)
to:
bViewResult = QtWidgets.QPushButton('View Results', self)
bViewResult.clicked.connect(cargar_configuracion())
您的 pybind11 看起来不错,这是一个链接器错误。看起来 config.cpp
在您的解决方案中的另一个项目中,并且正在单独的可执行文件中构建。您在这里有两个选择,要么将 config.cpp 复制到同一目录,要么将 Ejemplo
重新配置为静态库,并在 python 包装器项目的属性中将其指定为依赖项。
这是我程序的结构:
我正在尝试将我的 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 放在同一目录中吗?
提前致谢!
Change your code from:
bViewResult = QtWidgets.QPushButton('View Results', self)
bViewResult.clicked.connect(self.openCSV)
to:
bViewResult = QtWidgets.QPushButton('View Results', self)
bViewResult.clicked.connect(cargar_configuracion())
您的 pybind11 看起来不错,这是一个链接器错误。看起来 config.cpp
在您的解决方案中的另一个项目中,并且正在单独的可执行文件中构建。您在这里有两个选择,要么将 config.cpp 复制到同一目录,要么将 Ejemplo
重新配置为静态库,并在 python 包装器项目的属性中将其指定为依赖项。