gpt4 book ai didi

python - 使用 pybind11 通过预先存在的嵌入式 python 解释器公开 C++ 功能

转载 作者:行者123 更新时间:2023-12-01 14:57:01 28 4
gpt4 key购买 nike

我是第一次尝试这种类型的编码,因此请原谅我缺乏知识。
要求:我有一个 C++ 代码,其中嵌入了 python 解释器,以便我可以使用 pybind11 导入/使用带有 C++ 的 python 库。此外,我想对这个完整的 C++ 代码(以及 python 解释器部分)进行包装,并将其作为模块公开给 python。为了清楚起见,请考虑以下示例:

**Main_code.cpp:**

#include <iostream>
#include <pybind11/embed.h> // everything needed for embedding

int main() {
pybind11::scoped_interpreter guard{}; // start the interpreter and keep it alive
pybind11::module sys = pybind11::module::import("sys");
pybind11::print(sys.attr("path"));
return 0;
}

我想将此代码公开给python(比如一个名为Cpp_func的模块)并使用“import Cpp_func”导入py脚本
我到目前为止所尝试的:
使用 pybind11,我可以设法扩展一个示例 cpp 代码,而无需将 python 解释器嵌入到 python 中。示例取自 pybind11 文档 https://pybind11.readthedocs.io/en/latest/basics.html “为简单函数创建绑定(bind)”部分。但是当 python 解释器已经嵌入到 C++ 代码中时,我无法弄清楚如何做同样的事情。
希望我的要求很明确。对此的任何评论都会非常有帮助!
提前致谢!

最佳答案

scoped_interpreter_guard只是一个 RAII wrapperinitialize_interpreterfinalize_interpreter .您可以调用finalize_interpreter你自己而不是Py_Finalize .

关于python - 使用 pybind11 通过预先存在的嵌入式 python 解释器公开 C++ 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63776963/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com