在XCODE 7上添加SDL 1.2.15框架:2次类main在编译时出错

时间:2015-09-30 09:35:53

标签: c++ sdl main xcode7

此问题已经被问过,但经过对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 ......

请正确和评论,证明是或否,因为我正处于学习过程中。

干杯!

1 个答案:

答案 0 :(得分:0)

我在声明主函数之前用#undef main解决了这个问题。