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

时间:2015-10-23 14:03:01

标签: c++ macos linker main allegro

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

使用apple提供的g ++,它会抱怨链接错误,_main未定义。但是,我已经检查并检查了,并且main在我的文件中明确定义。它必须是因为它在linux上编译和运行,但我无法弄明白。

我已经搜索了很多天和许多条款(太多无法列出)并且没有发现任何与mac和主要未定义相关的内容。可能会有一些我想念的东西吗?我需要在mac上做些特别的事情吗?最后要注意的是当我与allegro_main.a链接时,它会链接,但随后会崩溃。在linux上没有必要链接这个库。我通过macports使用allegro5。值得注意的是,用于在mac上编译的sh脚本是comp_mac.sh,而linux只是comp.sh.请注意,您可能需要修改sh脚本以在您的环境中进行编译。到目前为止,这些仅在我的环境(macports)上进行了测试。

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

感谢我能得到的所有帮助。

- 迈克尔。

1 个答案:

答案 0 :(得分:1)

发生了“_main”未定义符号错误,因为您没有使用allegro_main addon进行关联。

作为the Allegro 5 manual specifies,在C和C ++项目中,包含main()函数的文件必须包含核心标题allegro5/allegro.h。此外,您必须与allegro_main插件链接。

使用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的输出。