我想用一个Cython的科学家发表一个很长的C函数。我正在关注
我可以用numpy支持复制这些例子。
我对在library.cpp中声明为extern的变量做什么(或者根本不做任何事情)感到困惑。显然,我将有一个main.py来调用这个函数,而不是main.cpp。我应该如何声明ini_flag
和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
}
答案 0 :(得分:1)
您应该创建相应的library.hpp
文件:
int ini_flag, *A;
void func(...)
然后在Cython中:
cdef extern from "library.hpp":
int ini_flag, *A
void func(...)
然后你可以在Cython中正常使用它们。