Эта проблема уже была задана, но после обширного поиска в Google я не нашел вопросов, связанных с версией SDL 1.2.15 с последней версией XCODE, поэтому, пожалуйста, позвольте мне опубликовать проблему (снова) и решение, которое я ‘ Мы нашли для них актуальную версию (30 сентября 2015 года).
Config:
OSX 10.10.5
XCODE 7.0
SDL 1.2.15
Как воспроизвести:
Скопировал SDL.Framework в / Library / Frameworks, как описано в readme.txt
В шаблоне XCODE> Настройки здания> Путь поиска Framework как / Library / Frameworks
Я включил платформу SDL в файл main.cpp следующим образом:
#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 в main.cpp, комментируя эту строку в SDL_main.h или комментируя строку #include «SDL_main.h» в SDL.h, решает проблему. Я новичок в C ++ (я только учусь этому в университете много лет назад), но из других языков я знаю, что «взлом» библиотеки — очень плохая практика … хотя, похоже, это особая проблема совместимости с MAXOSX и Я действительно хочу использовать XCODE …
Пожалуйста, исправьте и прокомментируйте, обоснуйте да или нет, так как я нахожусь в процессе обучения
Ура!
Я решил проблему с #undef main до объявления основной функции.
Других решений пока нет …