Используя python scipy.weave inline с переменными ctype? - PullRequest
4 голосов
/ 16 июля 2009

Я пытаюсь передать переменную ctype во встроенный код c, используя scipy.weave.inline. Казалось бы, это будет просто. Документация хороша при работе с обычными объектными типами 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 голосов
/ 26 августа 2009

scipy.weave ничего не знает о ctypes. Входные данные ограничены большинством базовых встроенных типов, массивами numpy, объектами wxPython, объектами VTK и SWIG-обернутыми объектами. Вы можете добавить свой собственный код конвертера, хотя. В настоящее время документации по этому вопросу немного, но вы можете посмотреть на реализацию SWIG в качестве поучительного примера.

...