简单地包括SDL标头会导致链接器错误

Bla*_*lam 11 c++ opengl macos sdl xcode4

我打算将我的游戏从过剩迁移到sdl.

它完全适应过剩,但我想使用一些sdl功能.

所以我进入我的项目属性,在目标标题下我单击要编译的程序,构建阶段,链接二进制文件库,添加SDL.framework

与我为OpenGL.framework和GLUT.framework完成的操作完全相同

但是,当我添加:#include <SDL/SDL.h>当我尝试构建时,它会出现链接器错误:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
      __start in crt1.o
     (maybe you meant: _SDL_main)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

谷歌搜索只会导致一些公平的结果,但没有真正的解释.

epa*_*tel 8

SDL使用宏来重命名你的,main(..)并且应该提供它自己的,通常在SDLmain.m.它应与SDL.framework一起提供.

当你从这里下载框架http://www.libsdl.org/download-1.2.php阅读ReadMeDevLite.txtdevel-lite的文件夹.

另一个描述 http://www.meandmark.com/sdlopenglpart2.html

  • @Blam,一个.m文件是一个Objective-C文件.Mac版SDL是用Objective-C编写的.将文件SDLMain.h和SDLMain.m添加到项目中.它们包含在Mac OS X上编译SDL应用程序所需的粘合代码. (2认同)