【问题标题】:GNU GCC: undefined reference to `WinMain@16' when attempting to compile release (Code::Blocks) [duplicate]GNU GCC:尝试编译发行版时对“WinMain@16”的未定义引用(代码::块)[重复]
【发布时间】:2013-12-16 03:45:11
【问题描述】:

我正在寻找我的程序的 .exe,但在发布文件夹中找不到任何文件,因此我决定显式编译发布。 但这是我每次尝试编译时得到的结果: e:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\..\..\..\libmingw32.a(main.o):main.c:(.text.startup+0xa7)||undefined reference to 'WinMain@16'|

通过谷歌搜索,它看起来像是一个链接器错误,但我该如何处理呢?

我的程序由 main.cpp 和以下内容组成:(它是一个控制台应用程序)

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <fstream>
#include <sstream>
#include "AVLTree_GeeksforGeeks.h" //Consists of an extra .cpp
#include <vector>
#include <memory>
#include <limits>

int main()
{
    /*
    code
    */
    return 0;
}

我有点累,因为这里是凌晨 1 点,我正在尝试了解可能出了什么问题。 我应该尝试从控制台编译吗?

【问题讨论】:

  • 您是在构建控制台应用程序还是 Win32 窗口应用程序? (你有 main() 还是 WinMain()?)
  • @Cameron 感谢您的留言,我在第一篇文章中进行了编辑。它是一个控制台应用程序。
  • @Cubia 他的回答是分析,而不是解决方案。对不起,他是我发这个帖子的原因。
  • GCC 认为您正在构建一个 Windows 应用程序。检查您的构建配置设置。

标签: c++ gcc codeblocks


【解决方案1】:

您正在构建一个 GUI 子系统应用程序。从链接器正在寻找名为 WinMain 的主函数这一事实可以看出这一点。将编译选项更改为以控制台子系统为目标。

【讨论】:

  • 正如我在上面评论的那样,请参见此处:i.imgur.com/jg7hfq6.png - 我在环境中的其他地方也看过,一切似乎都指向“我们将其作为控制台对象”。还有什么想法吗?
  • WinMain 是 GUI 子系统应用程序的主要功能
  • 是的,你已经重复了你在回答中写的内容。
猜你喜欢
  • 2015-06-06
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多