2024-06-16 05:02:22 发布
网友
我试图用f2py包装一个简单的C函数。它可以编译,但函数只返回零。我是C语言的初学者,所以我很肯定在那里犯了一个愚蠢的错误。在
例如,c文件:
#include <stdio.h> #include <stdlib.h> void Test(double x, double y) { x = y*2; }
pyf文件:
要解决这个问题,你需要
如@mgilson所述,要在.c函数中为返回变量使用指针
.c
void Test(double *x, double y) { *x = y * 2; }
在.pyf接口中指定使用的指针,这是大小为1的相同数组
.pyf
然后,test.Test函数将返回一个长度为1的numpy ndarray,其中包含该标量。不过,我不确定是否有其他方法来处理它。在
test.Test
我不是C方面的专家,但我认为您的变量需要作为任何更改的指针:
C
void Test(double *x, double *y) { *x = *y * 2; }
编辑:我的第一个答案是错误的,正如其他人指出的那样,这些值确实应该作为指针传递给C。在
void Test(double* x, double* y) { *y = *x * 2; }
要解决这个问题,你需要
如@mgilson所述,要在
.c
函数中为返回变量使用指针在
^{2美元.pyf
接口中指定使用的指针,这是大小为1的相同数组然后,
test.Test
函数将返回一个长度为1的numpy ndarray,其中包含该标量。不过,我不确定是否有其他方法来处理它。在我不是
C
方面的专家,但我认为您的变量需要作为任何更改的指针:编辑:我的第一个答案是错误的,正如其他人指出的那样,这些值确实应该作为指针传递给C。在
相关问题 更多 >
编程相关推荐