如何从C代码访问python bool变量?

时间:2019-03-06 01:32:42

标签: python c ctypes

我一直在努力使用ctypes扩展Python应用程序,以用C代码调用共享库。我在Python中有一个布尔变量,我想在C代码的无限循环中定期检查它是否改变。有没有办法将python变量的内存地址发送给C函数并访问内容?

提前谢谢!

1 个答案:

答案 0 :(得分:3)

您不能传递对实际Python bool的引用。但是您可以制作一个ctypes.c_bool,将其指针传递给您的C代码,然后让Python代码为其分配.value属性,以从C的角度更改该值。

from ctypes import *

# Flag initially false by default, can pass True to change initial value
cflag = c_bool()  

# Call your C level function, passing a pointer to c_bool's internal storage
some_c_func(byref(cflag))

# ... other stuff ...

# If C code dereferences the bool* it received, will now see it as true
cflag.value = True