【问题标题】:Error message in codeblocks: Undefined reference to 'WinMain@16'代码块中的错误消息:对“WinMain@16”的未定义引用
【发布时间】:2025-12-02 00:05:02
【问题描述】:

我想在 Codeblocks 20.03 中运行以下代码,但收到错误消息:Undefined reference to 'WinMain@16'

代码:


std::string countSheep(int number) 
{
  std::string res;
  std::string s = " sheep...";

  for (int i = 1; i <= number; i++) {
    res += std::to_string(i) + s;
  }

  return res;
}

最初的问题是,我收到了错误消息:to_string' is not a member of ‘std 之后,我将 GCC 编译器更新到 9.2.0。但是现在,我不断收到该 winmain 错误消息。

你有什么想法,怎么办?

【问题讨论】:

  • 你的程序中有main()吗?请阅读minimal reproducible example
  • 看看这个也许:*.com/questions/21500724/…
  • 你是对的!缺少的 main() 部分导致了问题。我刚刚意识到 Codewars 网页上的源代码并不是完整的程序。但是谢谢,它帮助了我!

标签: c++ gcc codeblocks winmain


【解决方案1】:

看看这个:C++ undefined reference to WinMain@16 (Code::Blocks)

还有这个:Undefined reference to WinMain@16 - Codeblocks

关于您的代码,也许这里的一些更有经验的 c++ 可能会告诉我我错了。但是你的函数 countSheep 你没有返回任何东西,你想打印 res 我猜? 所以你不会返回一个稍后可以在 var 中使用的字符串,你只是打印出来。

如果是这样的话,正如我之前提到的,其他更有经验的人可以告诉我我错了,试试这个: `

#include <iostream>
#include <string>

void countSheep(int number);

int main()
{
   countSheep(3);
}
void countSheep(int number) 
{
        std::string res;
        std::string s = " sheep...";

          for (int i = 1; i <= number; i++) 
          {
                res += std::to_string(i) + s;
                std::cout << res << std::endl;
            }
}

【讨论】:

  • 谢谢!问题是缺少 main() 函数。
最近更新 更多