2013-12-06 3 views
1

Я использую Cython 0.19.2 (и Python 2.7.1), чтобы выставлять классы C++ для Python.Cython crash из примера документации

В первую очередь, я сделал тест с примером класса Rectangle в документации.

http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html

У меня есть аварии, которую я не понимаю.

Я попытался упростить код max. но у меня все еще есть проблема.

Вот мой файл pyx, источники C++ - это всего лишь вырезка & вставки из документации python/cython.

# distutils: language = c++ 
# distutils: sources = Rectangle.cpp 

cdef extern from "Rectangle.h" namespace "shapes": 
    cdef cppclass Rectangle: 
    pass 

cdef class PyRectangle: 
    cdef Rectangle* thisptr 

Я просто хочу объявить класс с помощью thisptr, который указывает экземпляр класса Rectangle C++.

Когда я пытаюсь скомпилировать программу с:

cython -a --cplus rect.pyx 

У меня есть следующие аварии:

Error compiling Cython file: 
------------------------------------------------------------ 
... 
cdef extern from "Rectangle.h" namespace "shapes": 
    cdef cppclass Rectangle: 
    pass 

cdef class PyRectangle: 
    cdef Rectangle* thisptr 
    ^
------------------------------------------------------------ 

rect.pyx:9:7: Compiler crash in AnalyseDeclarationsTransform 

File 'ModuleNode.py', line 101, in analyse_declarations: ModuleNode(rect.pyx:1:0, 
    full_module_name = 'rect') 
File 'Nodes.py', line 382, in analyse_declarations: StatListNode(rect.pyx:4:0) 
File 'Nodes.py', line 4251, in analyse_declarations: CClassDefNode(rect.pyx:8:5, 
    as_name = u'PyRectangle', 
    class_name = u'PyRectangle', 
    module_name = u'', 
    visibility = u'private') 
File 'Nodes.py', line 382, in analyse_declarations: StatListNode(rect.pyx:9:7) 
File 'Nodes.py', line 1208, in analyse_declarations: CVarDefNode(rect.pyx:9:7, 
    modifiers = [...]/0, 
    visibility = u'private') 

Compiler crash traceback from this point on: 
    File "/home/xxx/local/python2.7.1/site-packages/Cython/Compiler/Nodes.py", line 1208, in analyse_declarations 
self.entry.doc = embed_position(self.pos, self.doc) 
AttributeError: 'CVarDefNode' object has no attribute 'doc' 

я пытался компилировать с Pyrex, setup.py, ... все. Но у меня все еще такая же ошибка.

Есть ли что-то, что мне не хватает?

Thanks

+0

Единственное, что я могу заметить, это то, что ваш питон довольно старый, и что ваш cython не является последним. – PlasmaHH

+0

My Cython - 0.19.2, что является последним q [-_-] p – carmellose

+0

, ваше сообщение заставляет его выглядеть как его 0.19, а не 0.19.2 ... пытались обновить сам python? просто догадка ... – PlasmaHH

ответ

2

Хорошо, я, наконец, исправил это. Моя версия Python 2.7.1 просто не работает с последним Cython 0.19.2. Я обновился до 2.7.6, и он работает.

Смежные вопросы