Python 如何用Cython包装带有外部变量的C文件
我想包装一个相当长的C函数,它是由一位科学家和Cython一起发表的。我在跟踪 我能够用numpy支持复制这些示例 对于library.cpp中声明为extern的变量,我不知道该怎么做(或者怎么做)。显然,我将有一个main.py来调用这个函数,而不是main.cpp。我应该如何声明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
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中正常使用它们