我目前正在使用 allegro 5.0 和 c++ 编写一个 c++ 游戏。我最终会让它在 mac、linux、windows 以及可能的 android 和 iPhone 上运行。目前它在 linux 上编译和运行(在最新的 arch linux 上测试),但是在 mac 上有一个小问题:
使用苹果提供的 g++,它提示链接错误,_main 未定义。不过我查了查,我的文件里面肯定定义了main。它一定是无论如何,因为它在 linux 上编译和运行,但我无法弄清楚。
我在谷歌上搜索了很多天和很多术语(太多无法列出),但没有发现与 mac 和 main 未定义有任何关系。可能有什么我想念的吗?我需要在 Mac 上做一些特别的事情吗?最后要注意的一件事是,当我链接 allegro_main.a 时,它会链接,但随后会崩溃。在 linux 上不需要与这个库链接。我正在通过 macports 使用 allegro5。还有一点需要注意的是,mac上编译用的sh脚本是comp_mac.sh,linux下就是comp.sh。请注意,您可能需要修改 sh 脚本以在您的环境中编译。到目前为止,这些仅在我的环境 (macports) 上进行了测试。
我的代码可以在这里找到:http://github.com/2mb-solutions/horseshoes/
感谢所有我能得到的帮助。
-迈克尔。
最佳答案
出现“_main” undefined symbol 错误是因为您没有链接 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 的输出包含在您的构建命令中。
关于c++ - _main 未在 Mac OS X 10.11 上用 c++ 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33304295/