Python 如何用Cython包装带有外部变量的C文件

Python 如何用Cython包装带有外部变量的C文件,python,c,cython,Python,C,Cython,我想包装一个相当长的C函数,它是由一位科学家和Cython一起发表的。我在跟踪 我能够用numpy支持复制这些示例 对于library.cpp中声明为extern的变量,我不知道该怎么做(或者怎么做)。显然,我将有一个main.py来调用这个函数,而不是main.cpp。我应该如何声明ini\u标志和A并传递到func?除了让它们成为函数的参数,还有别的方法吗?如果可能,我不希望编辑原始library.cpp文件 // main.cpp: int ini_flag=0, *A; void ma

我想包装一个相当长的C函数,它是由一位科学家和Cython一起发表的。我在跟踪

我能够用numpy支持复制这些示例

对于library.cpp中声明为extern的变量,我不知道该怎么做(或者怎么做)。显然,我将有一个main.py来调用这个函数,而不是main.cpp。我应该如何声明
ini\u标志
A
并传递到
func
?除了让它们成为函数的参数,还有别的方法吗?如果可能,我不希望编辑原始library.cpp文件

// main.cpp:
int ini_flag=0, *A;
void main(){
    func(...)
    ...
}

// library.cpp:
extern int ini_flag, *A;
void func(...){
    if (ini_flag==0){
         // malloc and initialize A
         ini_flag=1;
    }

    // use A and do other stuff
}

您应该创建相应的
library.hpp
文件:

int ini_flag, *A;
void func(...)
然后在Cython:

cdef extern from "library.hpp":
    int ini_flag, *A
    void func(...)
然后你可以在Cython中正常使用它们