【问题标题】:_main not defined on Mac OS X 10.11 in c++_main 未在 C++ 中的 Mac OS X 10.11 上定义
【发布时间】:2016-01-23 02:31:52
【问题描述】:

我目前正在使用 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/

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

-迈克尔。

【问题讨论】:

  • 在此处发布您的代码,而不仅仅是 github 链接。
  • 在 github 页面上看不到 comp_mac.sh
  • 请提供一个Minimum, Complete, and Verifiable Example 来证明问题所在,而不是把整个项目都交给我们。

标签: c++ macos linker main allegro


【解决方案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 的输出。

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 2016-12-22
    • 2016-04-09
    • 2016-03-20
    • 2016-10-08
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多