登录
首页 >  Golang >  Go问答

导出 Boost::Python 模块到 Go 的方法

来源:stackoverflow

时间:2024-02-14 22:03:25 119浏览 收藏

从现在开始,努力学习吧!本文《导出 Boost::Python 模块到 Go 的方法》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我没有工作代码来显示输出。

要求是从 go 代码中调用此 python 模块“pylib”。

许多类似的帖子建议使用 os/exec (在 pythonpath 中声明 .so)将 pylib 作为外部进程调用。

如果是这种情况,如何传递 作为参数?

go 中应该将对象创建为结构体吗?

#include 

    #include "Bonjour.hpp"
    
    using namespace boost::python;
    
    BOOST_PYTHON_MODULE(pylib)
    {
        class_< Bonjour >("Bonjour", init())
          .def("greet", &Bonjour::greet)
          .add_property("msg", &Bonjour::get_msg, &Bonjour::set_msg);
    }

boost.python 库在上面的示例中用作 c++ 代码的包装器,它允许您从 python 运行 c++ 代码

谁能告诉我如何从 go 调用相同的(pylib)?谢谢


正确答案


您无法自动在进程 (Go) 和子进程 (Python) 之间传送结构化数据。

手动传送数据的最简单和最常见的方法是使用标准输入和标准输出。另一种方法是使用命令行参数。

不是 Go 中的类型。因此,您必须编写大量管道才能使这项工作正常进行。

我能想到的最直观的方法就是将固定模型序列化为JSON,然后在Python中反序列化。一旦解析了具有该模型的 Python 对象,您就可以使用其成员作为 C++ 对象构造函数的参数。执行这些操作的详细信息应该可以在已经回答的 Stack Overflow 问题上找到。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>