0

我正在尝试通过运行 在Windows 7 64 位上编译 Python Imaging Library

pip install pil

我已将编译器设置为 MinGW。在编译 _imaging.c 之前看起来一切正常。它在这个怪物 gcc 调用上失败:

 C:\MinGW\bin\gcc.exe -shared -s build\temp.win-amd64-2.7\Release\_imaging.o build\temp.win-amd64-2.7\Release\decode.o build\temp.win-amd64-2.7\Release\encode.o build\temp.win-amd64-2.7\Release\map.o build\temp.win-amd64-2.7\Release\display.o build\temp.win-amd64-2.7\Release\outline.o build\temp.win-amd64-2.7\Release\path.o build\temp.win-amd64-2.7\Release\libimaging\access.o build\temp.win-amd64-2.7\Release\libimaging\antialias.o build\temp.win-amd64-2.7\Release\libimaging\bands.o build\temp.win-amd64-2.7\Release\libimaging\bitdecode.o build\temp.win-amd64-2.7\Release\libimaging\blend.o build\temp.win-amd64-2.7\Release\libimaging\chops.o build\temp.win-amd64-2.7\Release\libimaging\convert.o build\temp.win-amd64-2.7\Release\libimaging\convertycbcr.o build\temp.win-amd64-2.7\Release\libimaging\copy.o build\temp.win-amd64-2.7\Release\libimaging\crc32.o build\temp.win-amd64-2.7\Release\libimaging\crop.o build\temp.win-amd64-2.7\Release\libimaging\dib.o build\temp.win-amd64-2.7\Release\libimaging\draw.o build\temp.win-amd64-2.7\Release\libimaging\effects.o build\temp.win-amd64-2.7\Release\libimaging\epsencode.o build\temp.win-amd64-2.7\Release\libimaging\file.o build\temp.win-amd64-2.7\Release\libimaging\fill.o build\temp.win-amd64-2.7\Release\libimaging\filter.o build\temp.win-amd64-2.7\Release\libimaging\flidecode.o build\temp.win-amd64-2.7\Release\libimaging\geometry.o build\temp.win-amd64-2.7\Release\libimaging\getbbox.o build\temp.win-amd64-2.7\Release\libimaging\gifdecode.o build\temp.win-amd64-2.7\Release\libimaging\gifencode.o build\temp.win-amd64-2.7\Release\libimaging\hexdecode.o build\temp.win-amd64-2.7\Release\libimaging\histo.o build\temp.win-amd64-2.7\Release\libimaging\jpegdecode.o build\temp.win-amd64-2.7\Release\libimaging\jpegencode.o build\temp.win-amd64-2.7\Release\libimaging\lzwdecode.o build\temp.win-amd64-2.7\Release\libimaging\matrix.o build\temp.win-amd64-2.7\Release\libimaging\modefilter.o build\temp.win-amd64-2.7\Release\libimaging\mspdecode.o build\temp.win-amd64-2.7\Release\libimaging\negative.o build\temp.win-amd64-2.7\Release\libimaging\offset.o build\temp.win-amd64-2.7\Release\libimaging\pack.o build\temp.win-amd64-2.7\Release\libimaging\packdecode.o build\temp.win-amd64-2.7\Release\libimaging\palette.o build\temp.win-amd64-2.7\Release\libimaging\paste.o build\temp.win-amd64-2.7\Release\libimaging\quant.o build\temp.win-amd64-2.7\Release\libimaging\quanthash.o build\temp.win-amd64-2.7\Release\libimaging\quantheap.o build\temp.win-amd64-2.7\Release\libimaging\pcddecode.o build\temp.win-amd64-2.7\Release\libimaging\pcxdecode.o build\temp.win-amd64-2.7\Release\libimaging\pcxencode.o build\temp.win-amd64-2.7\Release\libimaging\point.o build\temp.win-amd64-2.7\Release\libimaging\rankfilter.o build\temp.win-amd64-2.7\Release\libimaging\rawdecode.o build\temp.win-amd64-2.7\Release\libimaging\rawencode.o build\temp.win-amd64-2.7\Release\libimaging\storage.o build\temp.win-amd64-2.7\Release\libimaging\sunrledecode.o build\temp.win-amd64-2.7\Release\libimaging\tgarledecode.o build\temp.win-amd64-2.7\Release\libimaging\unpack.o build\temp.win-amd64-2.7\Release\libimaging\unpackycc.o build\temp.win-amd64-2.7\Release\libimaging\unsharpmask.o build\temp.win-amd64-2.7\Release\libimaging\xbmdecode.o build\temp.win-amd64-2.7\Release\libimaging\xbmencode.o build\temp.win-amd64-2.7\Release\libimaging\zipdecode.o build\temp.win-amd64-2.7\Release\libimaging\zipencode.o build\temp.win-amd64-2.7\Release\_imaging.def -LC:\Python27\lib -LC:\Python27\libs -LC:\Python27\PCbuild\amd64 -lkernel32 -luser32 -lgdi32 -lpython27 -lmsvcr90 -o build\lib.win-amd64-2.7\_imaging.pyd

此调用的错误开始于:

build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x70): undefined reference to `__imp__PyFloat_Type'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x78): undefined reference to `__imp__PyFloat_Type'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x85): undefined reference to `__imp__PyType_IsSubtype'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0xc9): undefined reference to `__imp__PyFloat_Type'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0xd1): undefined reference to `__imp__PyFloat_Type'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0xde): undefined reference to `__imp__PyType_IsSubtype'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x113): undefined reference to `__imp__PyExc_TypeError'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x11e): undefined reference to `__imp__PyErr_SetString'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x132): undefined reference to `__imp__PyExc_TypeError'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x13d): undefined reference to `__imp__PyErr_SetString'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x194): undefined reference to `__imp__PyInt_AsLong'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x1a3): undefined reference to `__imp__PyErr_Occurred'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x23e): undefined reference to `__imp__PyArg_ParseTuple'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x285): undefined reference to `__imp__PyArg_ParseTuple'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x316): undefined reference to `__imp__PyInt_AsLong'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x325): undefined reference to `__imp__PyErr_Occurred'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x341): undefined reference to `__imp__PyFloat_AsDouble'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x35f): undefined reference to `__imp__PyErr_Occurred'
build\temp.win-amd64-2.7\Release\_imaging.o:_imaging.c:(.text+0x393): undefined reference to `__imp__PyInt_AsLong'

我假设这些奇怪的未定义的东西是 Python C API 的一部分。那么,如果 gcc 调用包含 -lpython27,为什么会出现这些错误?

4

1 回答 1

0

作为 Python 包安装的一部分,在 Windows 中编译存在许多已知问题。我建议您使用过去对我有用的非官方 Windows 二进制文件。

您可以使用以下命令安装 PIL:

easy_install http://www.lfd.uci.edu/~gohlke/pythonlibs/xos8d83j/PIL-fork-1.1.7.win-amd64-py2.7.exe
于 2012-10-16T20:32:01.510 回答