【发布时间】:2021-12-04 01:07:08
【问题描述】:
假设我得到了一个看起来像这样的函数
void myFunc(int *a){
a[0]++;
a[1]++;
}
我尝试将这个函数与下面的函数绑定
#include "pybind11/numpy.h"
#include "pybind11/pybind11.h"
namespace py = pybind11;
PYBIND11_MODULE(pybindtest, m) {
m.def("myFunc", [](py::array_t<int> buffer){
py::buffer_info info = buffer.request();
myFunc(static_cast<int *>(info.ptr));
});
}
并使用下面的python代码进行测试
import pybindtest
a=[1,2];
pybindtest.myFunc(a);
print(a)
这显示[1, 2] 而不是[2, 3]。鉴于myFunc 是其他人写的,所以我不允许更改 API。是否可以将此函数绑定到python中?如果是,我做错了什么?
【问题讨论】:
-
Python 整数与 C++ 的
ints 非常不同,所以这真的不应该工作。