哦,我的话我是个傻瓜。调用函数时,我只是省略了第二个和第三个参数。像个傻瓜。因为那就是我。原来愚蠢的问题如下:
看来这肯定是很平常的事情,但是我找不到相关的教程,而且我对Numpy和ctest.c太不了解,无法自己解决。
我在文件ctest.c中有一个C函数。
#include
void cfun(const void * indatav, int rowcount, int colcount, void * outdatav) {
//void cfun(const double * indata, int rowcount, int colcount, double * outdata) {
const double * indata = (double *) indatav;
double * outdata = (double *) outdatav;
int i;
puts("Here we go!");
for (i = 0; i < rowcount * colcount; ++i) {
outdata[i] = indata[i] * 2;
}
puts("Done!");
}
(您可能会猜到,我最初的参数是double *而不是void *,但无法弄清楚Python方面该怎么做。我当然很想将它们改回来,但我并不挑剔,因为 只要有效。)
我用它制作了一个共享库。 gcc -fPIC -shared -o ctest.so ctest.c
然后在Python中,我有几个numpy数组