如何使用pybind11进行绑定?

时间:2018-08-27 11:32:33

标签: python c++ pybind11

这是我程序的结构:

enter image description here

我正在尝试将C ++中的程序与python中的GUI绑定。我正在使用pybind11,并且我有一个用于绑定的python_binding.cpp文件以及一些“ .h”和“ .cpp”以及其他目录中的方法。我包含了“ .h”文件,但以某种方式python_binding.cpp无法识别它们。

文件config.cpp仅具有一个void方法“ cargar_configuracion()”,这就是绑定中的样子:

import os
os.mkdir(o + '\\' + i.split("\\")[-3])

其结果是以下错误:

#include "Ejemplo/config.h"

PYBIND11_MODULE(Example, m) {
m.doc() = "Binding"; // optional module docstring


m.def("cargar_configuracion", &cargar_configuracion);

我在做什么错?我应该将我的.cpp和.h与binding.cpp放在同一目录中吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您的pybind11看起来不错,这是链接器错误。看来Configuration.GetConnectionString("SQLConnection"))在解决方案中的另一个项目中,并且正在单独的可执行文件中构建。您在此处有两个选择,要么将config.cpp复制到同一目录中,要么将config.cpp重新配置为静态库,然后将其指定为python包装器项目属性中的依赖项。

答案 1 :(得分:0)

  

从以下位置更改代码:

bViewResult = QtWidgets.QPushButton('View Results', self) 
bViewResult.clicked.connect(self.openCSV)
  

至:

bViewResult = QtWidgets.QPushButton('View Results', self)
bViewResult.clicked.connect(cargar_configuracion())