具有C++代码:
namespace ns {
struct Person {};
}
我想在
Person
模块中向python公开ns
类:import libapp
x = libapp.ns.Person()
可以使用swig吗?
我想将
C++
命名空间层次结构映射到Python
模块层次结构。我有一个用
Boost.Python
(它允许这样的mapping)编写的包装器,并且我要切换到swig,所以我不想重写包装器客户端代码。 最佳答案
最简单的答案是为每个要公开的 namespace 编写一个SWIG模块,因此在上述实例中,您将在libapp包中编写一个名为ns
的SWIG模块。
您可以使用SWIG %import
指令引用仍在其他模块中的其他 namespace 。
您也可以对SWIG产生的运行时信息进行一些修改,以在运行时甚至在编译时进行处理,但是这样做的复杂性远远超过了将模块进行干净拆分的好处。
关于python - 如何使用Swig C++ namespace 作为python模块公开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52005337/