[英]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.