2012-04-25 87 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