2012-07-08 72 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網站下載了SDL-devel-1.2.15-mingw32.tar.gz文件,並將該文件夾解壓到桌面。

之後,我複製了所有從/SDL-1.2.15/include/SDL的頭文件,以C:/MinGW/include/SDL

然後我複製3個文件從/SDL-1.2.15/lib文件夾到C:/MinGW/lib folder

他們是:

libSDL.dll.a 
libSDL.la 
libSDLmain.a 

最後我將bin目錄中的SDL.dll文件複製到將編譯.exe文件的相同目錄中。

我想我已經正確地設置了一切,但基於我如何編譯它,我得到了兩條不同的消息。

首先,我嘗試使用Sublime Text 2編輯器中的構建系統功能來編譯它。

這是我已經告訴崇高文字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] 

所以我再試圖編譯直接從命令提示符。

我改變了目錄複製到同一目錄作爲我的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 2012-07-08 02:39:05

+0

@Antimony對不起,但我很新,但我該如何爲圖書館提供明確的路徑?我只在這裏使用-lC:\ path \?我正在考慮使用CodeBlocks,但我更喜歡Sublime Text 2,所以我想先試着讓它工作。但是,如果我無論如何無論如何都無法使用它,我現在可能會被迫使用CodeBlocks。 – 2012-07-08 02:41:12

+0

對不起,我沒有從Sublime運行構建工具的經驗。我總是使用Code :: Blocks for C++開發。 – Antimony 2012-07-08 02:44:16

回答

4

我似乎已經解決了我自己的問題。

我在窗口得到的錯誤命令提示符是因爲SDL似乎需要爲main()函數正確的簽名,所以我改變:

int main(void) { 

到:

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

這讓我從命令提示符編譯沒有任何問題。

然後Sublime Text 2錯誤原來是我編寫生成系統文件的方式的問題。

我只需要將-l標誌分成不同的值。

以前我寫了這樣的標誌:

"-lmingw32 -lSDLmain -lSDL -mwindows" 

但我需要把它改成這樣:

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

現在我可以從崇高文本2通過按F7構建。