仅仅包含SDL头文件就会导致链接错误

11

我打算将我的游戏从glut迁移到sdl。

在glut中,它完美地工作,但我想使用一些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个回答

8

我对基于Mac的开发还很新,甚至不确定什么是.m文件,你能解释一下我该如何处理这些事情吗? - Blam
2
@Blam,.m文件是Objective-C文件。SDL的Mac版本是用Objective-C编写的。将SDLMain.h和SDLMain.m文件添加到您的项目中。它们包含您需要在Mac OS X上编译SDL应用程序的粘合代码。 - Swift Dev Journal

2

我发现当我遇到以下错误时:

Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
(maybe you meant: _SDL_main)

我忘记去项目 -> 构建阶段 -> 编译源代码并将SDLMain.m添加到列表中。这立即解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接