Добавление SDL 1.2.15 Framework в XCODE 7: 2 раза класс main дает ошибку при компиляции

Эта проблема уже была задана, но после обширного поиска в 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 …

Пожалуйста, исправьте и прокомментируйте, обоснуйте да или нет, так как я нахожусь в процессе обучения

Ура!

0

Решение

Я решил проблему с #undef main до объявления основной функции.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]