Теперь, когда я успешно установил Cython в Windows 7, я пытаюсь скомпилировать код Cython с помощью Cython, но gcc делает мою жизнь трудной.
cdef void say_hello(name):
print "Hello %s" % name
Использование gcc для компиляции кода вызывает десятки undefined ссылок на -erros, и я уверен, что libpython.a
доступен (как сказано в учебнике по установке, undefined ссылка to -errors, если этот файл отсутствует).
$ cython ctest.pyx
$ gcc ctest.c -I"C:\Python27\include"
C:\Users\niklas\AppData\Local\Temp\cckThGrF.o:ctest.c:(.text+0x1038): undefined reference to `_imp__PyString_FromStringAndSize'
C:\Users\niklas\AppData\Local\Temp\cckThGrF.o:ctest.c:(.text+0x1075): undefined reference to `_imp___Py_TrueStruct'
C:\Users\niklas\AppData\Local\Temp\cckThGrF.o:ctest.c:(.text+0x1086): undefined reference to `_imp___Py_ZeroStruct'
C:\Users\niklas\AppData\Local\Temp\cckThGrF.o:ctest.c:(.text+0x1099): undefined reference to `_imp___Py_NoneStruct'
C:\Users\niklas\AppData\Local\Temp\cckThGrF.o:ctest.c:(.text+0x10b8): undefined reference to `_imp__PyObject_IsTrue'
c:/program files/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../libmingw32.a(main.o):main.c:(.text+0xd2): undefined reference to `[email protected]'
collect2: ld returned 1 exit status
Странно, что использование pyximport
* или setup
- script работает очень хорошо, но это не очень удобно, когда все еще работает над модулем.
Как скомпилировать эти .c
файлы, созданные с помощью Cython, используя gcc?
или любой другой компилятор, важно, чтобы он работает!
*pyximport
: Нормально ли, что только встроенные в python функции и классы содержатся в импортированном модуле, а не cdef-функции и классы?
как:
# filename: cython_test.pyx
cdef c_foo():
print "c_foo !"
def foo():
print "foo !"
c_foo()
import pyximport as p; p.install()
import cython_test
cython_test.foo()
# foo !\nc_foo !
cython_test.c_foo()
# AttributeError, module object has no attribute c_foo
UPDATE
Вызов $ gcc ctest.c "C:\Python27\libs\libpython27.a"
убивает ссылку undefined на -erros, но этот:
c:/program files/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../libmingw32.a(main.o):main.c:(.text+0xd2): undefined reference to `[email protected]'