无法使用多个输入参数编译Cython函数

时间:2015-08-10 02:30:55

标签: cython

我正在努力让Cython运行,我想我差不多了,但遇到了一个我不明白的障碍。我可以用一个参数编译函数,但不能用多个参数编译。我有这个问题与python 3.3,但不是2.7。

我成功编译并运行了“hello world”和fibonacci示例,但是当我尝试使用两个或更多输入参数编译任何内容时,编译时会出错。

将其简化为一个非常简单的案例。这将编译,导入到python,然后运行。

def cycheckadd(c):
    b = 1
    d = b + c
    return d

这不是。

def cycheckadd(b,c):
    d = b + c
    return d

构建时返回以下错误。

    C:\Users\Chris\PycharmProjects\CythonTest>python setup.py build_ext --inplace
Compiling cycheck.pyx because it changed.
Cythonizing cycheck.pyx
running build_ext
building 'cycheck' extension
creating build
creating build\temp.win32-3.3
creating build\temp.win32-3.3\Release
c:\mingw\bin\gcc.exe -mdll -O -Wall -IC:\WinPython-32bit-3.3.5.9\python-3.3.5\include -IC:\WinPython-32bit-3.3.5.9\python-3.3.5\include -c cycheck.c -o build\temp.win32-3.3\Release\
cycheck.o
writing build\temp.win32-3.3\Release\cycheck.def
creating build\lib.win32-3.3
c:\mingw\bin\gcc.exe -shared -s build\temp.win32-3.3\Release\cycheck.o build\temp.win32-3.3\Release\cycheck.def -LC:\WinPython-32bit-3.3.5.9\python-3.3.5\libs -LC:\WinPython-32bit-3
.3.5.9\python-3.3.5\PCbuild -lpython33 -lmsvcr100 -o build\lib.win32-3.3\cycheck.pyd
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libmsvcrt.a(dupvs00137.o):(.idata$5+0x0): multiple definition of `_imp___assert'
C:\WinPython-32bit-3.3.5.9\python-3.3.5\libs/libmsvcr100.a(dqcgs00457.o):(.idata$5+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

使用下面的setup.py文件编译。

from setuptools import setup
from Cython.Build import cythonize

setup(
    name = 'cython math check',
    ext_modules = cythonize("cycheck.pyx"),
)

使用python 3.3和cython 0.22生成此结果。我使用2.7时没有这个问题。

编译器是MinGW。我一直在Windows 10-64bit上使用32位版本的Python。我已将以下配置文件添加到python目录。

C:\ WinPython-32位-3.3.5.9 \蟒-3.3.5 \ LIB \的distutils \ distutils.cfg

[build]
compiler = mingw32

[build_ext]
compiler = mingw32

非常感谢任何帮助!

谢谢, 克里斯

0 个答案:

没有答案