gpt4 book ai didi

python - 如何使用 Cython 用外部变量包装 C 文件

转载 作者:行者123 更新时间:2023-11-30 15:36:51 25 4
gpt4 key购买 nike

我想用 Cython 包装一个由科学家发布的相当长的 C 函数。我正在关注

http://scipy-lectures.github.io/advanced/interfacing_with_c/interfacing_with_c.html#interfacing-with-c

我能够通过 numpy 支持复制这些示例。

我很困惑对于在library.cpp 中声明为extern 的变量该做什么(或者做什么)。显然,我将有一个将调用此函数的 main.py,而不是 main.cpp。我应该如何声明 ini_flagA 并传递给 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 中正常使用它们了。

关于python - 如何使用 Cython 用外部变量包装 C 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22424859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com