cython setup.py给出.o而不是.dll

时间:2011-03-14 00:07:22

标签: python dll cython win64

我是cython的新手,所以请原谅我,如果我错过了一些明显的东西。我正在尝试构建c扩展以在python中使用以提高性能。我有fc.py模块带有一堆函数,试图通过cython使用dsutils生成一个.dll并在win64上运行:

c:\python26\python c:\cythontest\setup.py build_ext --inplace

我在C:\ Python26 \ Lib \ distutils中有dsutils.cfg。根据需要,disutils.cfg具有以下配置设置:

[build]
compiler = mingw32

我的startup.py看起来像这样:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension('fc', [r'C:\cythonTest\fc.pyx'])]

setup(
  name = 'FC Extensions',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)

这是命令行输出的样子:

C:\python26\python C:\cythontest\setup.py build_ext --inplace
running build_ext
cythoning C:\cythonTest\fc.pyx to C:\cythonTest\fc.c
building 'FC' extension
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\python26\include -Ic:\pytho
n26\PC -c C:\cythonTest\fc.c -o c:\cythontest\fc.o

我有针对目标/主机amdwin64类型构建的最新版mingw。我有最新版本的cython for python26 for win64。 Cython确实给了我一个没有错误的fc.c,只有一些类型转换的警告,一旦我说得对,我会处理它。此外,它生成fc.def fc.o文件而不是给.dll。我没有错。我在线程上发现它将根据需要自动创建.so或.dll,这是不会发生的。

2 个答案:

答案 0 :(得分:1)

最后,我能够为win64构建扩展。显然,如果你有VC 2010 express,你可以调整disuilts以使用msvc9compiler来编译模块。详细信息可以在here找到。非常感谢nukeitdotorg的那些人提出这个问题,还感谢J.F. Sebastian的提示。

答案 1 :(得分:0)

您是否尝试使用

进行编译
python setup.py build --compiler=mingw32