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

时间:2018-01-18 16:36:06

标签: python c python-2.7

你有一个用SWIG(http://swig.org/)编写的python模块,名为“swigMod1”,以及.i扩展名文件中名为“int A1 = 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全局变量(“int B = 1;”),并且您希望像之前的示例一样访问它,但输入“cMod.cvar.B”不会工作,因为它只是一个SWIG功能。

是否有可能获得“cMod.cvar.B”和“swigModule.cvar.A1 = cMod.cvar.B”之类的结果?

请注意我是如何宣布整数只是为了简单,但在实践中我面对其他类型,我想找到一个通用的解决方案。我也省略了正确的检查以避免不良影响。

0 个答案:

没有答案