如何从Python访问C全局变量?

2024-10-01 22:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个用SWIG(http://swig.org/)编写的python模块,名为“swigMod1”,在.i扩展文件中有一个名为“inta1=0;”的全局C变量。在python环境下输入“import swigMod1”和“swigMod1.cvar.A1”将导入新的扩展,并允许您在执行期间读取和修改A1。在

如果运行两个swig模块,类似“swigMod1.cvar.A1=swigMod2.cvar.A2”的语法将变量A1(在第一个模块中)复制到A2(在第二个模块中)。在

在我的项目中,这是一个非常有用的功能,我想在下一个考虑的情况下保留它。在

现在您有了另一个名为“cMod”的扩展,这次是通过经典的C API(https://docs.python.org/2.7/extending/extending.html#)编写的。源代码中还有一个C全局变量(“intb=1;”),您希望像前面的示例一样访问它,但是键入化学需氧量.B“不工作,因为它只是SWIG功能。在

有没有可能得到类似“的结果?”化学需氧量.B“和”swigModule.cvar开关模块.A1号=化学需氧量.B“?在

请注意,我声明整数只是为了简单起见,但实际上我面对的是其他类型,我想找到一个通用的解决方案。我也省略了避免不良影响的适当检查。在


Tags: 模块文件org功能httpa2a1swig

热门问题