gpt4 book ai didi

c++ - Boost python,嵌入时从python调用c++函数

转载 作者:太空狗 更新时间:2023-10-29 23:17:09 25 4
gpt4 key购买 nike

我目前有以下内容:

namespace py=boost::python;

//C++
void f() {
std::cout << "hello world\n";
}

//I am not precious about this, if it can be done without a module that would be great
BOOST_PYTHON_MODULE(test)
{
py::def("f", f);
}

int main() {
auto main_module =py::import("__main__");
auto main_namespace =main_module.attr("__dict__");
//???????
auto result=py::exec_file("t.py", main_namespace);
}

//t.py
f()

我正在尝试调用 f,但我不确定让它工作所需的胶水。我可以上课

 int main() {
//...

py::obejct p_my_type=py::class_<my_type>("my_type").def("f", &my_type::f);
main_namespace["my_type"]=p_my_type;

//...

但是 boost::python::def 似乎没有像 class_ 那样返回 boost::python::object

我的问题是,如何让第一个测试用例按预期工作?其次是我在第二个代码片段中公开我的类型的方式“正确”吗?

最佳答案

修复很简单,但本页的文档中未提及:

http://www.boost.org/doc/libs/1_55_0/libs/python/doc/tutorial/doc/html/python/embedding.html

我需要这样做:

auto main_module    =py::import("__main__");
auto main_namespace =main_module.attr("__dict__");
inittest();
auto result=py::exec_file("t.py", main_namespace);


from test import f
f()

关于c++ - Boost python,嵌入时从python调用c++函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988465/

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