2012-04-25 94 views
2

我正在開發一個協作項目,並且控制項目主分支的人員在Mac上工作。正因爲如此,他的makefile中有一些細微差別,在Windows上不能很好地轉換成我。我使用MinGW來保存我的庫,並使用g ++進行編譯。在Makefile中鏈接SDL庫,C++

Makefile文件(因爲我認爲它應該去)

bomb: source/Level.cpp source/Level.h source/main.cpp 
g++ -o bomb source/Level.cpp source/main.cpp -Wall -I. -I\MinGW\include\SDL -lSDLmain -lSDL -lSDL_image 

,對他作品的Makefile:

bomb: source/Level.cpp source/Level.h source/main.cpp 
g++ -o bomb source/Level.cpp source/main.cpp -Wall -I. -I/Library/Frameworks/SDL.framework/Headers -lSDLmain -lSDL -lSDL_image -framework 

我包括SDL庫文件是在「C:\ MinGW的\包括\ SDL」。使用這些知識,我將如何正確編寫makefile?作爲一個側面說明,使用我目前的生成文件時,我得到的錯誤是:

C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to '[email protected]' 

回答

3

你有沒有嘗試添加-lmingw32到庫列表的末尾?你有一個int main(int argc, char** argv)函數定義的地方?另請參閱SDL FAQ

+0

謝謝!你能簡單地解釋一下爲什麼解決了我的問題?另外,當網站讓我在5分鐘左右時,我會接受你的答案:) – Nibirue 2012-04-25 07:13:02

+0

AFAIK SDL將'main'函數轉換爲MinGW32運行時庫中的'WinMain'函數。因此你需要鏈接它。 – 2012-04-25 07:14:35

+1

其實libmingw32必須是第一個。 libs的正確順序是:'-lmingw32 -lSDLmain -lSDL ... rest' – Yarg 2012-04-25 07:14:50