【发布时间】:2021-04-15 04:38:05
【问题描述】:
我没有工作代码来显示输出。
要求是从 Go 代码中调用这个 python 模块“pylib”。
许多类似的帖子都建议使用 os/exec(在 pythonpath 中声明 .so)来调用 pylib 作为外部进程。
如果是这种情况,如何将
对象应该在 Go 中创建为 struct 吗?
#include <boost/python.hpp>
#include "Bonjour.hpp"
using namespace boost::python;
BOOST_PYTHON_MODULE(pylib)
{
class_< Bonjour >("Bonjour", init<string, object, object, dict>())
.def("greet", &Bonjour::greet)
.add_property("msg", &Bonjour::get_msg, &Bonjour::set_msg);
}
Boost.Python 库在上面的示例中被用作 C++ 代码的包装器,它允许您从 Python 运行 C++ 代码
谁能告诉我如何从 Go 中调用相同的(pylib)?谢谢
【问题讨论】:
-
您是否正在尝试做类似 CGo 提供给 Go 的东西?如果您拥有的库是 Python,为什么要显示 C++ 代码?这里甚至需要 Python 吗?
-
实际代码是用 C++ 编写的,并使用 Boost::Python 将 C++ 函数公开给现有的 Python 项目。我现在必须使用将导入 pylib 的 Go 而不是 Python 项目。类似于 CGo 为 Go 提供的东西
-
@Amelia 以golang call python 在谷歌上的热门搜索。另一个明显的选择是删除 python 包装器并直接从 go 调用你的 c++ 代码。
标签: python go boost-python