[英]Best way to pass pointer to C function from Python using CFFI
我想在具有以下簽名的第三方庫中為C函數創建Python包裝器
int f(double* x);
函數f
修改輸入參數x
(即使用指針通過引用進行調用)。 什么是實現Python包裝函數的最有效方法,以便Python用戶可以將其視為每次都返回一個新數字的函數? 偽代碼示例:
# lib and ffi are imported from a compiled cffi.FFI() object
def python_f():
??? double x; ???
rc = lib.f(&x)
assert rc == 0
return x
我是否應該使用數組模塊(例如,創建大小為1的“雙精度”數組,將其傳遞給函數,然后返回第一個索引)? 是否有使用ctypes或cffi輔助函數的更輕量級方法?
def python_f():
x_ptr = ffi.new("double[1]")
x_ptr[0] = old_value
rc = lib.f(x_ptr)
assert rc == 0
return x_ptr[0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.