2015-10-23 4 views
0

В настоящее время я пишу C++-игру с использованием allegro 5.0 и C++. В конечном итоге я смогу работать с Mac, Linux, Windows и, возможно, с Android и iPhone. В настоящее время он компилируется и запускается на linux (протестирован на новейшем архиве linux), но на mac есть небольшая проблема:_main не определен в Mac OS X 10.11 в C++

Используя предоставленное яблоко g ++, он жалуется на ошибку привязки, _main не определен. Тем не менее, я проверил и проверил, и главное определено в моем файле. Это должно быть так или иначе, потому что оно компилируется и работает на Linux, но я не могу понять это.

У меня есть много разных дней и много терминов (слишком много, чтобы их перечислить), и я не нашел ничего общего с магом и основным, не определяемым. Может быть, что-то мне не хватает? Что-то мне нужно делать на Mac? Последнее, что нужно отметить, когда я связываюсь с allegro_main.a, это ссылки, но потом сбой. Связывание с этой библиотекой не требуется в linux. Я использую allegro5 через macports. Также полезно отметить, что сценарий sh, используемый для компиляции на mac, - comp_mac.sh, а linux - просто comp.sh. Обратите внимание, что вам может потребоваться изменить сценарии (ы) sh для компиляции в вашей среде. Они тестируются только в моей среде (macports).

Мой код можно найти здесь: http://github.com/2mb-solutions/horseshoes/

Спасибо за всю помощь я могу получить.

-Michael.

+0

Отправьте свой код здесь, а не только ссылку github. – Barmar

+2

Не видите 'comp_mac.sh' на странице github. – Barmar

+2

Просьба указать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), который демонстрирует проблему, а не просто сбрасывает весь ваш проект на нас. – Barmar

ответ

1

Ошибка символа «_main» не определена, потому что вы не связываетесь с allegro_main addon.

В качестве the Allegro 5 manual specifies в проектах C и C++ файл, содержащий вашу функцию main(), должен содержать заголовок ядра allegro5/allegro.h. Кроме того, вы должны установить связь с аддоном allegro_main.

Это может быть простой в использовании PKG-конфигурации:

 
pkg-config --cflags --libs allegro-5 allegro_ttf-5 allegro_audio-5 allegro_acodec-5 allegro_font-5 allegro_main-5 

Вы можете поместить эту команду в обратные кавычки (`), чтобы включить вывод PKG-конфигурации в вашей команде сборки.

Смежные вопросы