Cython extern函数从foo.h转变为类似模块的对象?

时间:2011-08-17 11:23:42

标签: namespaces extern cython

我想做以下事情:

cdef extern from "foo.h" namespace "foo":
    int bar(int, int)

def bar(a, b):
    return foo.bar(a, b)

但这不起作用。什么是namespace "foo"部分?如何实现将从“foo.h”中取出的函数加载到名为foo的对象中?

更新

我可以使用以下文件结构和代码找到解决方案:

spam.pyx
spam_c.pxd
c\
  spam.c

# spam.pyx
cimport spam_c as spam

def foo(a, b):
    return spam.foo(a, b)

# spam_c.pxd
cdef extern from "spam.c":
    double foo(double, double)

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我发现这是解决这个问题的首选方法。