使用Python中的C:如何创建ctypes包装器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python中的C:如何创建ctypes包装器相关的知识,希望对你有一定的参考价值。
我正在尝试使用此网页上提供的包装器示例: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(...
答案
可能晚了2年。。。。
更改
以上是关于使用Python中的C:如何创建ctypes包装器的主要内容,如果未能解决你的问题,请参考以下文章