2016-07-06 23 views
0

SDL2와 함께 SDL2_ttf를 사용하고 있습니다 (Visual Studio 2015에서). 다음 코드를 실행할 때SDL 및 SDL2와 함께 SDL_ttf를 사용할 때 C++ 액세스 위반이 발생했습니다.

#include "SDL.h" 
#include "SDL_ttf.h" 

int main(int argc, char* args[]) { 
    SDL_Init(SDL_INIT_EVERYTHING); 
    TTF_Init(); 

    SDL_Window* window; 
    SDL_Renderer* renderer; 
    SDL_CreateWindowAndRenderer(1600, 900, SDL_WINDOW_OPENGL, &window, &renderer); 

    TTF_Font* font = TTF_OpenFont("comic.ttf", 12); 
    SDL_Color color = { 0, 0, 0, 255 }; 
    SDL_Surface* textSurface = TTF_RenderText_Solid(font, "asdf", color); 
    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, textSurface); 

    TTF_Quit(); 
    SDL_Quit(); 
    return 0; 
} 

"SDL.dll 누락"런타임 오류가 발생했습니다. SDL.dll, SDL2.dll, libfreetype-6.dll, SDL_ttf.dll, zlib1.dll 및 다른 라이브러리를 system32 폴더에 넣어 런타임 오류를 해결했지만 즉시 다른 오류가 발생했습니다. "처리되지 않은 예외는 다음과 같습니다. 0x000000006C812E39 (SDL2.dll) MCP2016.exe : 0xC0000005 : 액세스 위반 읽기 위치 0x000000010000006A. " 나는 나에게 이런 얘기를 비주얼 스튜디오 대화 상자에서 "휴식"하기로 결정했을 때

, 그것은 SDL_ttf 및 SDL2 같은 액세스 위반이 발생할 수 있습니다 제안 내가 old forum post 건너 온 라인

SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, textSurface);

지적 이것은 완전히 호환되지 않기 때문입니다. SDL.dll에 대해 불만을 제기 한 이래로 문제가있는 것으로 생각합니다. DLL을 SDL2 헤더 파일로 다시 컴파일하는 것이 좋았지 만, Windows와 C++이 잘 맞지 않아서 필자의 능력을 뛰어 넘는 것이 두렵다.

저는 약 8 시간 동안이 작업을 해왔으며이 문제를 해결하기위한 아이디어가 부족합니다. 누구든지 이것에 대해 어떤 생각을 가지고 있습니까?

+3

SDL_ttf 2.0을 사용해 보셨습니까? https://www.libsdl.org/projects/SDL_ttf/ – user3684240

+0

실수로 SDL_ttf 1.0 버전을 사용 한 것으로 보입니다. 나는 그것이 SDF_ttf 2.0이라고 생각했다 : $ 고마워! –

답변

3

SDL 및 SDL2는 호환되지 않습니다. 하나 또는 다른 하나가 있습니다.

의견에서 언급했듯이 해결 방법은 대신 SDL2_ttf를 사용하는 것입니다.

+0

고맙습니다. –