[英]python - ctypes, retrieve value of void pointer sent to shared c library
[英]Change value in shared library with ctypes
我有以下lib.c
:
#include <stdio.h>
double var = 4;
double* fun() {
printf("%zd %f\n", &var, var);
return &var;
}
和以下main.py
:
import ctypes
lib = ctypes.cdll.LoadLibrary('lib.so')
fun = lib.fun
fun.restype = ctypes.POINTER(ctypes.c_double)
print ctypes.addressof(fun().contents)
我如何才能在.py
内部更改存储在fun().contents
地址处的double
,例如,将var
设置为10.2
?
以下将更改该值:
import ctypes
lib = ctypes.cdll.LoadLibrary('x')
fun = lib.fun
fun.restype = ctypes.POINTER(ctypes.c_double)
v = fun()
v.contents.value = 2.0
v = fun()
输出(对于C函数,请注意,我使用%p
代替%zd
):
000007FEFAC14000 4.000000
000007FEFAC14000 2.000000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.