如何在python scipy.weave中使用ctype变量?
我正在尝试通过scipy.weave.inline把一个ctype变量传递给内联的C代码。大家可能会觉得这很简单。文档在处理普通的Python对象时写得很好,但这些对象有很多我不需要的功能。对我来说,使用ctypes来处理C代码更合适。不过,我不太确定我的错误出在哪里。
from scipy.weave import inline
from ctypes import *
def test():
y = c_float()*50
x = pointer(y)
code = """
#line 120 "laplace.py" (This is only useful for debugging)
int i;
for (i=0; i < 50; i++) {
x[i] = 1;
}
"""
inline(code, [x], compiler = 'gcc')
return y
output = test()
pi = pointer(output)
print pi[0]
1 个回答
4
scipy.weave 不知道 ctypes 是什么。它的输入限制在一些基本的内置类型、numpy 数组、wxPython 对象、VTK 对象和 SWIG 包装的对象上。不过,你可以添加自己的转换代码。目前关于这方面的文档不多,但你可以查看这个 SWIG 实现,作为一个学习的例子。