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