问题标签 [pybind11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2765 浏览

c++ - PyBind11:绑定使用双指针的函数

我想用 PyBind11 绑定一个 C++ 函数。问题是这个函数有一个带有双指针的参数,编译器会引发错误

error: cannot initialize a parameter of type 'char **' with an rvalue of type 'typename make_caster<char **>::cast_op_type<typename std::add_rvalue_reference<char**>::type>' (aka 'char *').

具体来说,代码如下所示:

0 投票
2 回答
2772 浏览

python - 通过 pybind11 遍历包裹在 Python 中的 C++ 对象

我有定义一个curves类、一个curve类和一个point类的 C++ 代码,我正在尝试通过 pybind11 为这些类编写 Python 绑定并在 Python 中使用它们。

这些类的 pybind11 绑定如下所示:

在 C++ 中,我可以迭代一个curves对象,该对象由该对象组成,curve 而该对象又由point以下对象组成:

例如,在 Python 中,我可以使用 访问单个点curves_instance.last.first.x1,但我不知道如何遍历所有曲线、点等。

0 投票
2 回答
1079 浏览

boost - Pybind11:可以使用 mpi4py 吗?

在 Pybind11 中是否可以在 Python 端使用 mpi4py,然后将通信器交给 C++ 端?

如果是这样,它将如何工作?

如果没有,是否可以使用Boost?如果是这样,它将如何完成?

我在网上搜索了几个小时,但没有找到任何东西。

0 投票
1 回答
866 浏览

c++ - 通过引用传递的特征参数

我在 Eigen 文档中关注此页面,试图了解 Eigen 参数的使用

https://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html

以下代码按预期工作

但是,如果数组的初始声明更改为

然后程序将无法通过以下方式编译:

或者即使只a保留定义,也会因分段错误而失败。

0 投票
1 回答
193 浏览

c++11 - Pybind11:跟进将函数与 std::initializer_list 绑定

我知道这里有一个类似的问题:Binding a function with std::initializer_list argument using pybind11但因为我不能评论(没有足够的声誉)我在这里问我的问题:Do the results from the above-linked question also apply to constructors : 即,如果我有一个构造函数,std::initializer_list<T>有没有办法绑定它?

0 投票
1 回答
2440 浏览

python - Pybind11:将 Python 列表传递给 C 样式数组

我想将 Python 列表传递给采用 C 样式数组的构造函数。那应该如何工作。问题是 C 风格的数组本质上是一个指针。此外,该数组的维度为nxn,即它是一个多维数组。

在 python 方面,它应该是这样的:

0 投票
1 回答
610 浏览

c++ - `overload_cast` 在特定情况下失败

我发现了一个overload_cast失败的具体案例,我不知道如何解决这个问题。

显示该行为的最小示例是

使用例如编译:

给出:

删除第一个函数(我不会重载)或更改其签名可以解决问题。但这显然不是我想要的。

0 投票
1 回答
818 浏览

pybind11 - 无法在成员函数中绑定右值引用参数

我正在使用 pybind11 为我无法更改其源的 C++ 库创建 python 绑定。它包含一个定义具有右值引用参数(例如T &&val)的成员函数的类。我无法创建与具有右值引用参数的成员函数的绑定,但绑定到具有相同参数的非成员函数按预期工作。

一个简化的示例如下所示:

pybind11 代码如下所示:

第一次绑定尝试的编译错误是:

关于我可能做错了什么的任何想法?由于它适用于非成员函数,我倾向于怀疑 pybind11 问题,但我想我会先在这里检查。

0 投票
2 回答
8896 浏览

python - Pybind Numpy 访问 2D/ND 数组

pybind 新手 - 阅读文档,但我不知道如何将其应用于 2D 数组。

我有两个存储 3d 坐标的数组shape = (10,3)

现在,使用 pybind,我如何在 C++ 中对 numpy 数组执行此操作?

在某些文档中,我阅读以使用[]运算符访问元素,在其他文档中使用(). 如何分配 3D 矢量?我将如何获取指向数组元素的指针以使用 strides 进行赋值 - 或者它是否有运算符?

0 投票
1 回答
692 浏览

python - 多态性和pybind11

当我想在 Python 中使用 C++ 多态性时,我对 pybind11 有一个奇怪的行为。这是我的问题的一个简单示例:

这个脚本的输出是

[我的基础,我的派生]

我的基地

我的基地

但预期的输出是

[我的基础,我的派生]

我的基地

我的派生

因为 mylist 返回一个 std::vector,其中包含派生类 (MyDerived) 的实例作为第二个成员。奇怪的是,当我将列表作为一个整体打印时,会识别出 MyDerived。

这是C++代码的头文件:

这是cpp文件:

编辑:更令人惊讶的是,当我删除 MyDerived 的“打印”绑定时,我收到以下错误消息

[我的基础,我的派生]

我的基地

回溯(最近一次通话最后):

文件“test.py”,第 8 行,在

a[1].print()

AttributeError:“polymorphism.MyDerived”对象没有属性“print”

此消息似乎意味着 MyDerived 被很好地识别,而错误版本的 print 被调用(如果我理解得很好)。

编辑 2:这是一个使用蹦床课程的版本。但是,此版本导致相同的错误输出。

这是对应的cpp文件: