簡體   English   中英

使用CFFI從Python傳遞指向C函數的指針的最佳方法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM