【问题标题】:How to expose with swig C++ namespaces as python modules如何使用 swig C++ 命名空间作为 python 模块公开
【发布时间】:2018-08-24 13:15:35
【问题描述】:

拥有 C++ 代码:

namespace ns {
    struct Person {};
}

我想在模块ns 中将Person 类公开给python:

import libapp
x = libapp.ns.Person()

是否可以使用 swig?

我想将C++ 命名空间层次结构映射到Python 模块层次结构。

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

【问题讨论】:

    标签: python c++ swig


    【解决方案1】:

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

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

    您还可以对 SWIG 生成的运行时信息进行一些处理,以便在运行时甚至在编译时将其连接起来,但这样做的复杂性远远超过了将模块完全拆分的好处。

    【讨论】:

    • 如何在 SWIG 中嵌套模块?请你举个例子好吗。
    猜你喜欢
    • 2013-02-03
    • 1970-01-01
    • 2013-04-15
    • 2014-01-26
    • 2020-07-14
    • 2013-09-06
    • 2019-06-24
    • 2011-02-06
    • 2013-06-22
    相关资源
    最近更新 更多