我正在学习在 python 中用 ctypes 包调用 C语言,但是遇到一些问题。
#include<stdio.h>
#define N 101
double ssum(double a[N]);
double ssum(double a[N])
{
return a[N-1];
}
该程序的作用是输入一个长度为101的数组,输出数组的最后一位。
gcc -shared -o a.so ./a.c
import numpy as np
from ctypes import *
a=CDLL('./a.so') #python 程序和 a.so 在同一文件夹下
xx=(c_double*101)()
for i in range(101):
xx[i]=0.01
print(a.ssum(xx))
正确结果应该是0.01,但是输出的结果是-751816848,且每次运行的结果都不一样,似乎是将地址输入了 a.ssum 函数。
请问各位,问题是出在哪?