用pyBIDN11从C++传递到Python的向量

2024-10-03 23:24:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图开发一个应用程序,我需要把C++的向量数据传递给一个嵌入式Python解释器。我用的是pybind11。 我的目标是让Python修改C++向量。p>

例如:

namespace py = pybind11;

int main()
{

    py::scoped_interpreter guard{}; // start the interpreter and keep it alive
    py::object main = py::module::import("__main__");
    py::object globals = main.attr("__dict__");



    double* myVect = new double[100];
    memset(myVect, 0, sizeof(double) * 100);
    myVect[0] = 1.0;
    myVect[99] = 2.0;
    size_t size = 100;
    py::array pyVect((size_t)100, myVect);
    globals["myArray"] = pyVect;
    std::cout << myVect[0] << "    ---   " << myVect[99] << std::endl;
    py::exec("print(myArray)");
    py::exec("myArray = myArray[::-1]");
    py::exec("print(myArray)");
    std::cout << myVect[0] << "    ---   " << myVect[99] << std::endl;
    delete[] myVect;

}
< Python中的数组是反向的,而不是C++向量。这是因为对python的赋值生成了向量的副本。 是否可以直接传递指针,以便直接从Python修改C++向量?


Tags: pysizeobjectmain向量execpybind11std