用f2py包装的C函数只返回零

2024-06-16 05:02:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用f2py包装一个简单的C函数。它可以编译,但函数只返回零。我是C语言的初学者,所以我很肯定在那里犯了一个愚蠢的错误。在

例如,c文件:

#include <stdio.h>
#include <stdlib.h>
void Test(double x, double y)
{
  x = y*2;
}

pyf文件:

^{pr2}$

Tags: 文件函数testinclude错误doublepyfstdio
3条回答

要解决这个问题,你需要

  1. 如@mgilson所述,要在.c函数中为返回变量使用指针

    void Test(double *x, double y)
    {
       *x = y * 2;
    }
    
  2. .pyf接口中指定使用的指针,这是大小为1的相同数组

    ^{2美元

然后,test.Test函数将返回一个长度为1的numpy ndarray,其中包含该标量。不过,我不确定是否有其他方法来处理它。在

我不是C方面的专家,但我认为您的变量需要作为任何更改的指针:

void Test(double *x, double *y)
{
  *x = *y * 2;
}

编辑:我的第一个答案是错误的,正如其他人指出的那样,这些值确实应该作为指针传递给C。在

void Test(double* x, double* y)
{
    *y = *x * 2;
}

相关问题 更多 >