コンパイルを試みたところ、Linux ボックスで同じエラーが発生しました。
$ python setup.py build
DBG> include = ['/usr/include', '/usr/include/python2.6', '/usr/include/SDL']
running build
running build_ext
building 'surfutils' extension
creating build
creating build/temp.linux-i686-2.6
creating build/temp.linux-i686-2.6/src
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include -I/usr/include/python2.6 -I/usr/include/SDL -I/usr/include/python2.6 -c src/surfutils.c -o build/temp.linux-i686-2.6/src/surfutils.o
In file included from src/surfutils.c:1:
/usr/include/python2.6/pygame/pygame.h:68:17: error: SDL.h: Arquivo ou diretório inexistente
In file included from src/surfutils.c:1:
/usr/include/python2.6/pygame/pygame.h:312: error: expected specifier-qualifier-list before ‘SDL_VideoInfo’
/usr/include/python2.6/pygame/pygame.h:350: error: expected specifier-qualifier-list before ‘SDL_Surface’
src/surfutils.c:5: error: expected ‘)’ before ‘*’ token
src/surfutils.c: In function ‘PyCollisionPoint’:
src/surfutils.c:74: error: ‘SDL_Surface’ undeclared (first use in this function)
src/surfutils.c:74: error: (Each undeclared identifier is reported only once
src/surfutils.c:74: error: for each function it appears in.)
src/surfutils.c:74: error: ‘surf1’ undeclared (first use in this function)
src/surfutils.c:74: error: ‘surf2’ undeclared (first use in this function)
src/surfutils.c:74: warning: left-hand operand of comma expression has no effect
src/surfutils.c:92: error: ‘PySurfaceObject’ has no member named ‘surf’
src/surfutils.c:97: error: ‘SDL_SRCALPHA’ undeclared (first use in this function)
src/surfutils.c:111: error: ‘PySurfaceObject’ has no member named ‘surf’
src/surfutils.c:161: warning: implicit declaration of function ‘collisionPoint’
error: command 'gcc' failed with exit status 1
surfutils
SDL 開発ヘッダーを必要とする拡張機能をコンパイルしようとしているようです。
libsdl1.2-dev
そのため、ディストリビューション パッケージ マネージャーを使用してパッケージをインストールしたところ、問題なく動作しました。システム用にビルドするには、SDL 開発ヘッダーをインストールする必要があります。
あなたの質問は本当に次のとおりです: Windows に SDL 開発ヘッダーをインストールするにはどうすればよいですか? また、プログラムでそれらを使用するにはどうすればよいですか?
さて、私は2番目の質問に答えることができます。setup.py を編集する必要があります。
#!/usr/bin/env python2.3
from distutils.core import setup, Extension
from distutils.sysconfig import get_config_vars
includes = []
includes.extend(get_config_vars('INCLUDEDIR'))
includes.extend(get_config_vars('INCLUDEPY'))
includes.append('/usr/include/SDL')
print 'DBG> include =', includes
setup(name='surfutils',
version='1.0',
ext_modules=[Extension(
'surfutils',
['src/surfutils.c'],
include_dirs=includes,
)],
)
9 行目を変更します。
includes.append('/usr/include/SDL')
このパスを、SDL ヘッダーがある場所に変更します。つまり、次のようになります。
includes.append(r'C:\mydevelopmentheaders\SDL')
ゲーム開発者に、この問題が発生していることを伝えるメモを残してください。プラットフォームで SDL ヘッダーを見つけるためのより良い方法を提供できます。