_main 未在 C++ 中的 Mac OS X 10.11 上定义

_main not defined on Mac OS X 10.11 in c++

我目前正在使用 allegro 5.0 和 c++ 编写一个 c++ 游戏。我最终会让它在 mac、linux、windows 和可能的 android 和 iPhone 上运行。目前它在 linux 上编译并运行(在最新的 arch linux 上测试),但是在 mac 上有一个小问题:

使用苹果提供的 g++,它抱怨 linking 错误,_main 未定义。不过我查了查,我的文件里面肯定定义了main。无论如何它肯定是因为它在 linux 上编译和运行,但我无法弄清楚。

我用谷歌搜索了很多天和很多术语(太多无法列出),但没有发现与 mac 和 main 未定义有任何关系。可能有什么我想念的吗?我需要在 mac 上做些特别的事情吗?最后要注意的一件事是当我 link 和 allegro_main.a 时它 links,但随后崩溃。在 linux 上不需要与该库链接。我正在通过 mac 端口使用 allegro5。值得注意的是,用于在 mac 上编译的 sh 脚本是 comp_mac.sh,而 linux 只是 comp.sh。请注意,您可能需要修改 sh 脚本以在您的环境中编译。到目前为止,这些仅在我的环境(mac端口)上进行了测试。

我的代码可以在这里找到:http://github.com/2mb-solutions/horseshoes/

感谢您提供的所有帮助。

-迈克尔.

出现“_main”未定义符号错误是因为您没有link使用allegro_main addon

the Allegro 5 manual specifies 一样,在 C 和 C++ 项目中,包含您的 main() 函数的文件必须包含核心头文件 allegro5/allegro.h。此外,您必须使用 allegro_main 插件 link。

使用 pkg-config 可能最简单:

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

您可以将该命令放在反引号 (`) 中,以将 pkg-config 的输出包含在您的构建命令中。