如何使用 swig C++命名空间作为 python 模块公开
How to expose with swig C++ namespaces as python modules
有C++代码:
namespace ns {
struct Person {};
}
我想在模块ns
中向python公开Person
类:
import libapp
x = libapp.ns.Person()
可以使用树枝吗?
我想将C++
命名空间层次结构映射到Python
模块层次结构的其他工作。
我有一个用Boost.Python
编写的包装器(它允许这样的映射(,并且我正在切换到 swig,所以我不想重写包装器客户端代码。
最简单的答案是为每个要公开的命名空间编写一个 SWIG 模块,因此在上面的实例中,您将在 libapp 包中编写一个名为ns
的 SWIG 模块。
您可以使用 SWIG%import
指令引用仍在其他模块中的其他命名空间。
你也可以对SWIG生成的运行时信息进行一些处理,以便在运行时甚至编译时将其连接起来,但这样做的复杂性远远超过了干净地拆分模块的好处。
相关文章:
- 在 python 模块中导入子模块时PyImport_Import失败
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- 如何使用 swig C++命名空间作为 python 模块公开
- 如何将 cv::mat 对象从 python 模块传递到 c++ 函数并返回返回的 cv::mat 类型为对象?
- C++ Swig Python 模块中的内存泄漏
- boost.python模块扩展生成SIGSEGV
- 使用Boost Python的Python模块是空的?
- 为什么无法在 Cocoa 应用程序调用的 C++ func 中嵌入自定义 Python 模块
- 来自C 的自动化Python模块的张量源
- 如何使用C++导入多个同名的 python 模块
- C++ Python 模块导入错误: "undefined symbol: Py_InitModule3" ( Py_InitModule () )
- 使用 Boost.Python 创建的 Python 模块不会被导入
- 导入 Boost Python 模块 (function_impl_base9max_arityEv) 时出错
- numpy.core.multiarray在通过Xcode中开发的C 应用程序调用Python模块时未能导入
- 运行时错误:找不到与 ImageSensor 匹配的 Python 模块
- GDB Python模块读取内存内容
- 我可以编译boost.python模块而没有BJAM
- C++优化级别是否会影响Swig Python模块的性能
- 如何从python模块(boost.python)导入类
- 使用C/neneneba API和C++类编写Python模块