具有C ++代码:
namespace ns {
struct Person {};
}
我想在模块Person
中向Python提供ns
类:
import libapp
x = libapp.ns.Person()
可以用swig吗?
我想将C++
命名空间层次结构映射到Python
模块层次结构。
我有一个用Boost.Python
编写的包装器(它允许使用mapping),并且我切换到swig,所以我不想重写包装器客户端代码。
答案 0 :(得分:0)
最简单的答案是为每个要公开的名称空间编写一个SWIG模块,因此在上述实例中,您将在libapp软件包中编写一个名为ns
的SWIG模块。
您可以使用SWIG %import
指令引用其他模块中的其他命名空间。
您还可以对SWIG生成的运行时信息进行一些修改,以在运行时甚至在编译时进行处理,但是这样做的复杂性远远超过了将模块干净地拆分的好处。