質問

Pygameを使用するWindowsでダウンロードしたPythonアプリを作成しようとしています。 Python 2.5とPygame 1.7.1をインストールしました。私はPythonを初めて使用しましたが、Windows Consoleコマンドラインの上位レベルの名前を入力してみました。 (Win XP Proを使用しています。)

これは私が得るメッセージです。

c: python25 include pygame pygame.h(68):致命的なエラーC1083:file: 'sdl.h':そのようなファイルまたはディレクトリはありません。

PygameはSDLの上に構築されており、別のSDLインストールは必要ではないと思いました。それにもかかわらず、SDL 1.2.13をインストールし、SDLに含まれるフォルダーを%include%環境変数に追加しました。まだ運はありません。

きがついた c: python25 lib site-packages pygame いくつかのsdl*.dllファイルが含まれていますが、pythonツリーのどこにもsdl.hヘッダーファイルはありません。もちろん、SDLヘッダーをにコピーできます c: python25 include pygame フォルダーですが、それは不快な考えです。

誰かが物事をセットアップする正しい方法を知っていますか?

編集:アプリケーションはです 「The Penguin Machine」Pygameアプリ.

役に立ちましたか?

解決

コンパイルを試して、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ヘッダーを見つけるためのより良い方法を提供できます。

他のヒント

コンパイラをコンパイルすると、コンパイラはいくつかのディレクトリ、いくつかのハードコードとビルドのヘッダーファイルを調べ、通常はコンパイラへの引数として与えられます(たとえば、「GCC -I/USR/LOCAL/INCLUDE ...」など)。 1つの推測は、あなたがこれを見逃しているということです。他の考えられる原因をチェックしない場合 エラーメッセージ.

あなたが持っている必要があります SDL 開発ライブラリがインストールされましたが、「SDLヘッダーをコピーできる」と言うので、すでに持っているように聞こえます。次に、あなたの問題は、コンパイラにそれらのファイルを含むディレクトリを含むディレクトリを調べることだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top