如何在没有cdll的情况下在python中调用C函数

时间:2017-09-05 14:04:01

标签: python c wrapper

我正在尝试创建一个简单的脚本来测试在python脚本中调用C函数。

有解决方案使用ctypes(加载cdll包装器),但对于我的应用程序,我将加载这些脚本(使用微型python解释器)到MCU,它没有任何系统文件。

还有其他方法可以在python中调用C函数吗?

谢谢

使用ctypes时的示例代码:

C:

int our_function(int num_numbers, int *numbers) {
    int i;
    int sum;
    for (i = 0; i < num_numbers; i++) {
        sum += numbers[i];
    }
    return sum;
}

首先用gcc编译

蟒:

import ctypes
import sum

_sum = ctypes.CDLL('libsum.so')
_sum.our_function.argtypes = (ctypes.c_int, ctypes.POINTER(ctypes.c_int))

def our_function(numbers):
    global _sum
    num_numbers = len(numbers)
    array_type = ctypes.c_int * num_numbers
    result = _sum.our_function(ctypes.c_int(num_numbers), array_type(*numbers))
    return int(result)

0 个答案:

没有答案