配置:
OSX 10.10.5 XCODE 7.0 SDL 1.2.15
如何重现:
按照 readme.txt 中的说明将 SDL.Framework 复制到 /Library/Frameworks
在 XCODE 模板 > 构建设置 > 框架搜索路径为 /Library/Frameworks
我在 main.cpp 文件中包含了 SDL 框架,如下所示:
#include <SDL/SDL.h>
然后我在 XCODE 上加载 SDL 框架时遇到了同样的问题,因为 main 类的双重声明阻止了编译。
这是错误消息:
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
(maybe you meant: _SDL_main)
这就是我解决它的方法:
我检查并看到 SDL.h 包含以下所有文件:
#include "SDL_main.h"
#include "SDL_stdinc.h"
#include "SDL_audio.h"
#include "SDL_cdrom.h"
#include "SDL_cpuinfo.h"
#include "SDL_endian.h"
#include "SDL_error.h"
#include "SDL_events.h"
#include "SDL_loadso.h"
#include "SDL_mutex.h"
#include "SDL_rwops.h"
#include "SDL_thread.h"
#include "SDL_timer.h"
#include "SDL_video.h"
#include "SDL_version.h"
#include "begin_code.h"
其中之一是 SDL_main.h,在该文件中我们看到:
#define main SDL_main
此行与 main.cpp 上的 main 类产生冲突,在 SDL_main.h 上注释该行或在 SDL.h 上注释 #include "SDL_main.h" 行可解决问题。我是 C++ 的菜鸟(我是多年前在大学里学的),但从其他语言中我知道“破解”库是一种非常糟糕的做法……尽管这似乎是与 MAXOSX 和我真的很想用 XCODE...
请更正和评论,证明是或否,因为我正在学习过程中。
干杯!