4

scipy.weave.inlineを使用してctype変数をインラインcコードに渡そうとしています。これは簡単だと思うでしょう。ドキュメントは通常のPythonオブジェクトタイプで行う場合は優れていますが、必要以上の機能があり、Cで作業する場合はctypesを使用する方が理にかなっています。ただし、エラーがどこにあるかはわかりません。

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]
4

1 に答える 1

4

scipy.weave は ctypes について何も知りません。入力は、ほとんどの基本的な組み込み型、numpy 配列、wxPython オブジェクト、VTK オブジェクト、および SWIG でラップされたオブジェクトに制限されています。ただし、独自のコンバーター コードを追加することはできます。現在、これに関するドキュメントはあまりありませんが、有益な例としてSWIG の実装を見ることができます。

于 2009-08-26T16:47:50.537 に答える