2012-07-08 2 views
1

g ++을 사용하여 SDL로 프로그램을 컴파일하려고했습니다.SDL 및 g ++로 컴파일 할 때 -lSDLmain 등을 찾을 수 없습니다.

이 프로그램은 이런 식으로 두 SDL 테스트 라인, 만 MAIN.CPP 파일입니다

#include "SDL/SDL.h" 

using namespace std; 

int main(void) { 
    SDL_Init(SDL_INIT_EVERYTHING); 

    SDL_Quit(); 

    return 0; 
} 

하지만 내 문제는 내가 오류가 SDL 라이브러리와 함께 할 수 있다는 것입니다.

우선 MinGW32를 설치하여 C++ 11에 대해 배울 수 있었으므로 GCC의 버전을 묻는 경우 version 4.7.0이라고합니다.

그런 다음 SDL-devel-1.2.15-mingw32.tar.gz 파일을 SDL 웹 사이트에서 다운로드하고 폴더를 바탕 화면으로 추출했습니다.

는 그 후 나는 내가 C:/MinGW/lib folder

/SDL-1.2.15/lib 폴더에서 3 개 파일을 복사 C:/MinGW/include/SDL 다음

/SDL-1.2.15/include/SDL에서 헤더 파일을 모두 복사 그들은했다 :

libSDL.dll.a 
libSDL.la 
libSDLmain.a 

그리고 마지막으로 I SDL.dll 파일을 bin 디렉토리에서 .exe 파일이 컴파일되는 디렉토리로 복사했습니다.

나는 모든 것을 올바르게 설정했다고 생각하지만, 어떻게 컴파일하려고했는지에 따라 두 개의 다른 메시지가 나타납니다.

우선 Sublime Text 2 편집기에서 시스템 빌드 기능을 사용하여 컴파일 해 보았습니다.

c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/ld.exe: cannot find lmingw32 -lSDLmain -lSDL -mwindows 
collect2.exe: error: ld returned 1 exit status 
[Finished in 0.3s with exit code 1] 

그래서 내가 다음에서 직접 컴파일하려고 :이 프로그램을 실행할 때

"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "-lmingw32 -lSDLmain -lSDL -mwindows"] 

내가 오류 메시지가 :

내가 실행하는 숭고한 텍스트 2를 말한 명령입니다 명령 프롬프트.

나는 나의 MAIN.CPP 같은 디렉토리로 디렉토리를 변경하고 다음 실행 :

g++ main.cpp -o main.exe -lmingw32 -lSDLmain -lSDL -mwindows 

을 그리고 다음과 같은 오류 메시지가 있어요 :

c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../libSDLmain.a(SDL_win32_main.o): In function `console_main': 
/Users/slouken/release/SDL/SDL-1.2.15/./src/main/win32/SDL_win32_main.c:315: undefined reference to `_SDL_main' 
collect2.exe: error: ld returned 1 exit status 

아무도 내가 뭐하는 거지 볼 수를 잘못된?

명령을 실행하는 위치에 따라 두 가지 메시지가 나타나는 이유는 무엇입니까? 어떻게 해결할 수 있습니까?

도움을 주시면 감사하겠습니다.

+0

라이브러리에 대한 명시적인 경로를 지정해 보았습니까? 명령 줄에서 너무 많은 번거 로움이 있다면 Code :: Blocks와 같은 GUI를 사용할 수 있습니다. – Antimony

+0

@Antimony 묻는 것에 대해 유감스럽게 생각합니다. 그러나 이것에 대해서는 아주 새로운 것이지만 라이브러리에 대한 명시적인 경로는 어떻게 제공합니까? 방금 -lC : \ path \를 사용합니까? 그리고 CodeBlocks 사용에 대해 생각하고 있었지만 Sublime Text 2가 훨씬 더 마음에 들었습니다. 그래서 처음에 그것을 사용하려고했습니다. 그러나 내가 어떤 이유로 든 작동하도록 할 수 없다면 지금 당장 CodeBlocks를 사용해야 할 것입니다. –

+0

죄송합니다. Sublime에서 빌드 도구를 실행 해본 경험이 없습니다. 나는 항상 Code :: Blocks를 C++ 개발에 사용한다. – Antimony

답변

4

나는 내 자신의 문제를 해결 한 것 같습니다.

int main(void) { 

에 :

int main(int argc, char *argv[]) { 

이 저를 허용 나는 창문에 점점 된 오류가 명령 프롬프트

는 SDL은 main() 함수에 대한 올바른 서명을 필요로 나타나기 때문에 내가 변경했다 아무 문제없이 명령 프롬프트에서 컴파일 할 수 있습니다.

그런 다음 Sublime Text 2 오류가 빌드 시스템 파일을 작성한 방식에 문제가있는 것으로 나타났습니다.

난 그냥 -l 플래그를 별도의 값으로 분할해야했습니다.

이전에 I는 다음과 같이 작성 플래그를했다 :

"-lmingw32 -lSDLmain -lSDL -mwindows" 

하지만이로 변경하는 데 필요한 :

"-lmingw32", "-lSDLmain", "-lSDL", "-mwindows" 

을 그리고 지금은 F7을 쳐서 숭고한 텍스트 2에서 구축 할 수 있습니다.