gpt4 book ai didi

python - 如何使用 swig C++ 命名空间作为 python 模块公开

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:13 28 4
gpt4 key购买 nike

拥有C++代码:

namespace ns {
struct Person {};
}

我想在模块 ns 中将 Person 类暴露给 python:

import libapp
x = libapp.ns.Person()

是否可以使用 swig?

在其他工作中,我想将 C++ 命名空间层次结构映射到 Python 模块层次结构。

我有一个用 Boost.Python 编写的包装器(它允许这样的 mapping )并且我正在切换到 swig,所以我不想重写包装器客户端代码。

最佳答案

最简单的答案是为每个要公开的命名空间编写一个 SWIG 模块,因此在上面的实例中,您将在 libapp 包中编写一个名为 ns 的 SWIG 模块。

您可以使用 SWIG %import 指令在其他模块中引用其他命名空间。

您还可以使用 SWIG 生成的运行时信息来在运行时甚至在编译时将其连接起来,但到目前为止这样做的复杂性超过了无论如何将模块完全拆分的好处。

关于python - 如何使用 swig C++ 命名空间作为 python 模块公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005337/

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