此问题已经被问过,但经过对Google的广泛搜索后,我发现没有与最新版XCODE的1.2.15版SDL相关的问题所以请允许我发布问题(再次)和解决方案我找到了最新版本的解决方案(2015年9月30日)。
配置:
OSX 10.10.5 XCODE 7.0 SDL 1.2.15
如何重现:
将SDL.Framework复制到/ Library / Frameworks,如readme.txt中所述
在XCODE模板上>建筑设置>框架搜索路径为/ Library / Frameworks
我在main.cpp文件中包含了SDL框架,如下所示:
#include <SDL/SDL.h>
当我尝试编译和测试时,由于类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 ......
请正确和评论,证明是或否,因为我正处于学习过程中。
干杯!
答案 0 :(得分:0)
我在声明主函数之前用#undef main解决了这个问题。