问题标签 [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.
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 *')
.
具体来说,代码如下所示:
python - 通过 pybind11 遍历包裹在 Python 中的 C++ 对象
我有定义一个curves
类、一个curve
类和一个point
类的 C++ 代码,我正在尝试通过 pybind11 为这些类编写 Python 绑定并在 Python 中使用它们。
这些类的 pybind11 绑定如下所示:
在 C++ 中,我可以迭代一个curves
对象,该对象由该对象组成,curve
而该对象又由point
以下对象组成:
例如,在 Python 中,我可以使用 访问单个点curves_instance.last.first.x1
,但我不知道如何遍历所有曲线、点等。
boost - Pybind11:可以使用 mpi4py 吗?
在 Pybind11 中是否可以在 Python 端使用 mpi4py,然后将通信器交给 C++ 端?
如果是这样,它将如何工作?
如果没有,是否可以使用Boost?如果是这样,它将如何完成?
我在网上搜索了几个小时,但没有找到任何东西。
c++ - 通过引用传递的特征参数
我在 Eigen 文档中关注此页面,试图了解 Eigen 参数的使用
https://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html
以下代码按预期工作
但是,如果数组的初始声明更改为
然后程序将无法通过以下方式编译:
或者即使只a
保留定义,也会因分段错误而失败。
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>
有没有办法绑定它?
python - Pybind11:将 Python 列表传递给 C 样式数组
我想将 Python 列表传递给采用 C 样式数组的构造函数。那应该如何工作。问题是 C 风格的数组本质上是一个指针。此外,该数组的维度为nxn,即它是一个多维数组。
在 python 方面,它应该是这样的:
c++ - `overload_cast` 在特定情况下失败
我发现了一个overload_cast
失败的具体案例,我不知道如何解决这个问题。
显示该行为的最小示例是
使用例如编译:
给出:
删除第一个函数(我不会重载)或更改其签名可以解决问题。但这显然不是我想要的。
pybind11 - 无法在成员函数中绑定右值引用参数
我正在使用 pybind11 为我无法更改其源的 C++ 库创建 python 绑定。它包含一个定义具有右值引用参数(例如T &&val
)的成员函数的类。我无法创建与具有右值引用参数的成员函数的绑定,但绑定到具有相同参数的非成员函数按预期工作。
一个简化的示例如下所示:
pybind11 代码如下所示:
第一次绑定尝试的编译错误是:
关于我可能做错了什么的任何想法?由于它适用于非成员函数,我倾向于怀疑 pybind11 问题,但我想我会先在这里检查。
python - Pybind Numpy 访问 2D/ND 数组
pybind 新手 - 阅读文档,但我不知道如何将其应用于 2D 数组。
我有两个存储 3d 坐标的数组shape = (10,3)
现在,使用 pybind,我如何在 C++ 中对 numpy 数组执行此操作?
在某些文档中,我阅读以使用[]
运算符访问元素,在其他文档中使用()
. 如何分配 3D 矢量?我将如何获取指向数组元素的指针以使用 strides 进行赋值 - 或者它是否有运算符?
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文件: