我打算将我的游戏从过剩迁移到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)
谷歌搜索只会导致一些公平的结果,但没有真正的解释。
答案 0 :(得分:8)
SDL使用宏来重命名您的main(..)
,并且应该提供自己的宏,通常在SDLmain.m
中实现。它应与SDL.framework一起提供。
从此处下载框架http://www.libsdl.org/download-1.2.php阅读ReadMeDevLite.txt
文件夹中的devel-lite
。
答案 1 :(得分:2)
我发现当我收到错误时:
架构x86_64的未定义符号:
“_main”,引自:
主要可执行文件的隐式输入/启动
(也许你的意思是:_SDL_main)
我忘了去Project - &gt;构建阶段 - &gt;编译源并将SDLMain.m添加到列表中。这马上解决了我的问题。