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

时间:2011-08-15 23:27:25

标签: c++ macos opengl xcode4 sdl

我打算将我的游戏从过剩迁移到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)

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

2 个答案:

答案 0 :(得分:8)

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

从此处下载框架http://www.libsdl.org/download-1.2.php阅读ReadMeDevLite.txt文件夹中的devel-lite

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

答案 1 :(得分:2)

我发现当我收到错误时:

架构x86_64的未定义符号:
      “_main”,引自:       主要可执行文件的隐式输入/启动
       (也许你的意思是:_SDL_main)

我忘了去Project - &gt;构建阶段 - &gt;编译源并将SDLMain.m添加到列表中。这马上解决了我的问题。