2014-02-16 2 views
0

저는 SDL을 처음 사용하기 때문에 bool init() 함수가 있습니다. 나는 문제없이 며칠 동안 lazyfoot.net에서 SDL 2.0을 배웠다. 필자는 본질적으로 코드를 복사하고 있으며, 오늘은 내 코드를 만들려고 노력했습니다. (편집 : 나는 누군가가 내가 오래된 헤더 파일을 가지고있다는 것을 알고있다. 라이브러리를 설치 한 이후로 SDL_WINDOWPOS_UNDEFINED와 다른 2.0 기능을 사용할 수 있었기 때문에 그렇지 않다.) 어떤 이유로 든이 기능은 작동하지 않는다. 나는 (시도) 구축하고 실행하면 내가(C++) 함수가 선언되지 않았습니다.

(내 컴파일러로는 MinGW) 코드 :: 블록과 윈도우 7 스타터를 사용하고

이를 17 라인 옆에 붉은 깃발,가 .

bool init() { 

다음은 전체 소스 코드입니다.

error: 'SDL_WINDOWPOS_UNDEFINED' was not declared in this scope 

당신의 SDL의 이전 버전에 대한 헤더를 포함한 것을 의미한다 :

#include <iostream> 
#include <SDL.h> 

const int SCREEN_WIDTH = 500; 
const int SCREEN_HEIGHT = 500; 

bool init(); 
bool loadMedia(); 
void quit(); 

int time = 5000; 

SDL_Window* window = NULL; 
SDL_Surface* surface = NULL; 
SDL_Surface* topImage = NULL; 

bool init() { 
    bool success = true; 
    if(SDL_Init(SDL_INIT_VIDEO) < 0) { 
     std::cout << SDL_GetError() << std::endl; 
     success = false; 
    } 
    else{ 
     SDL_CreateWindow("My Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); 
     if(window == NULL) { 
      std::cout << SDL_GetError() << std::endl; 
      success = false; 
     } 
    } 
    return success; 
} 

bool loadMedia() { 
    bool success = true; 
    surface = SDL_GetWindowSurface(window); 
    if(surface == NULL) { 
     std::cout << SDL_GetError() << std::endl; 
     success = false; 
    } 
    else { 
     topImage = SDL_LoadBMP("image.bmp"); 
     if(topImage = NULL) { 
      std::cout << SDL_GetError() << std::endl; 
      success = false; 
     } 
     else { 
      SDL_BlitSurface(topImage, NULL, surface, NULL); 
      SDL_UpdateWindowSurface(window); 
      SDL_Delay(time); 
     } 
    } 
    return success; 
} 

void quit() { 
    SDL_FreeSurface(topImage); 
    topImage = NULL; 

    SDL_DestroyWindow(window); 
    window = NULL; 
    surface = NULL; 

    SDL_Quit(); 
} 

int main(int argc, char* args[]) { 
if(init() == true) { 
    init(); 
     if(loadMedia() == true) { 
      loadMedia(); 
     } 
    } 
quit(); 
return 0; 
} 
+0

는 뭔가 다른 초기화의 이름을 변경 시도 :

그냥 당신이 공식 라이브러리 웹 사이트에서 다운로드 할 수있는 권리 헤더를 포함해야합니다. 어쩌면 그 이름이 이미 SDL.h 어딘가에서 사용 된 것일 수도 있습니다. – evpo

+1

오류가 실제로 무엇을 말합니까? –

+0

오류가 없습니다. Code :: Blocks에는 17 번째 줄 옆에 빨간색 상자가있어 오류가 있음을 보여줍니다. 나는 Code :: Blocks에 익숙하지 않기 때문에 에러를 얻을 수있는 방법이있다. 나는 바보 일 뿐이라고 생각한다.하지만 그럴 수는 없다. – user3317103

답변

2

는이 오류를 얻고있다. SDL_WINDOWPOS_UNDEFINED은 SDL 2.0 버전에 정의되어 있습니다. http://www.libsdl.org/download-2.0.php

+0

미안하지만, 그렇지 않습니다. 좀 더 구체적이어야 했어. (나는 방금 첫 단락에 정보를 추가했다). SDL 2.0이 있으며 SDL_WINDOWPOS_UNDEFINED는 항상 저에게 효과적입니다. 내 SDL 파일은 확실히 구식이 아닙니다. – user3317103

+0

정확하게 생성 된 오류는 무엇입니까? – rullof

+0

오류가 발생하지 않습니다. 그것은 내가 컴파일하는 것을 허락하지 않는다. – user3317103

관련 문제