使用Python中的C:如何创建ctypes包装器

问题描述 投票:1回答:1

我正在尝试使用此网页上提供的包装器示例:https://pgi-jcns.fz-juelich.de/portal/pages/using-c-from-python.html

我创建了一个名为sum.c的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;
}

然后使用:编译它]

cc -fPIC -shared -o libsum.so sum.c

然后写了一个sum.py文件尝试调用它:

import ctypes

_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)

然后我写了一个test.py文件,尝试在python中调用此C函数:

import sum
print sum.our_function([1,2,-3,4,-5,6])

但是此错误正在弹出,我不知道为什么,因为我可以清楚地看到[文件夹中的libsum.so

OSError: libsum.so: cannot open shared object file: No such file or directory

我正在尝试这个我在此网页上提供的包装器示例:https://pgi-jcns.fz-juelich.de/portal/pages/using-c-from-python.html我创建了一个C文件名为sum.c:int our_function(...

python c ctypes
1个回答
0
投票

可能晚了2年。。。。

更改

© www.soinside.com 2019 - 2024. All rights reserved.