2014-03-25 2 views
4

Windows 컴퓨터에서 pysdl2를 시작하려고합니다. 지금까지 나는 단지 복사 및 붙여 넣기를 마치 Hello World tutorial에 붙였습니다. 그래서 실제로 작동하는지 볼 수 있습니다! 그렇지 않습니다. 나는이 프로그램을 실행하면pysdl2 액세스 위반 표시 이미지

import sys 
import sdl2.ext 

RESOURCES = sdl2.ext.Resources(__file__, "resources") 

sdl2.ext.init() 

window = sdl2.ext.Window("Hello World!", size=(640, 580)) 
window.show() 

factory = sdl2.ext.SpriteFactory(sdl2.ext.SOFTWARE) 
sprite = factory.from_image(RESOURCES.get_path("testimage.png")) 

spriterenderer = factory.create_sprite_render_system(window) 
spriterenderer.render(sprite) 

processor = sdl2.ext.TestEventProcessor() 
processor.run(window) 

sdl2.ext.quit() 

, 그것은 간단히 윈도우가이 오류와 충돌 표시 주소마다 다른

Traceback (most recent call last): 
    File "test.py", line 15, in <module> 
    spriterenderer.render(sprite) 
    File "C:\Python27\lib\site-packages\sdl2\ext\sprite.py", line 643, in render 
    surface.SDL_BlitSurface(sprites.surface, None, self.surface, r) 
WindowsError: exception: access violation reading 0x03F3B000 

있지만.

큰 이미지에만 나타납니다. 이미지 크기를 245 x 245 픽셀 이하로 조정하면 불만없이 표시됩니다. 개선 된 형식 지원을 위해 베개를 사용 중이며 bmp, pngjpg과 같은 문제가 발생합니다.

편집은 추가 :

오늘, 나는 다시 이해하려고 노력이에 파고했습니다. 245x245 픽셀이었던 나의 테스트 이미지는 spriterenderer를 만들고 나서을 호출하는 경우를 제외하고는 더 이상 작동하지 않습니다. 실제로 변수에 뭔가가 있는지 관심이있는 부분에 print sprite을 추가했습니다. , 그리고 그것을 표시합니다. print 행을 주석 처리하면 실패합니다. 그런 다음 동일한 이미지를 500x500으로 만들고 access violation 오류가 다시 발생했습니다. 나는 그것이 어떻게 진행되는지 전혀 모른다.

답변

1

사용중인 SDL 버전은 무엇입니까? Mercurial의 최신 개발 제품입니까?

그렇다면 불안정하고 Windows에서 제대로 실행되지 않는 버그가있을 수 있습니다. 제 경우에는 안정 버전과 함께 Arch와 Windows 모두에서 정상적으로 작동합니다.

거기에 오류가 반환되면 WindowsError가 발생합니다.이 오류는 DLL 파일의 사용으로 인한 것일 수 있습니다.

불안정한 버전을 사용하는 경우 안정적인 버전으로 사용해보십시오. 나중에 작동 할 수도 있습니다.

+0

안녕하세요, 답변 해 주셔서 감사합니다. 여기에서 안정 버전 2.0.3을 사용하고 있습니다. http://www.libsdl.org/download-2.0.php 방금 런타임 바이너리에서 .dll을 내 system32 폴더로 다운로드 한 다음 pySDL2를 설치했습니다. – MalphasWats