首页 > 解决方案 > MinGW G++ 未编译

问题描述

我正在尝试编译一个简单的“hello world”C++ 程序,但是当我使用 g++ 命令时,我收到错误“undefined reference to `WinMain@16”,这发生在我在 vscode 或终端中编译时,发生了什么?代码:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
vector<string> msg {"Hello World"};

for (const string& word : msg)
{
    cout << word << " ";
}
cout << endl;
}

标签: c++visual-studio-codeg++

解决方案


您的错误不是编译器,而是链接器错误。这意味着它仍然可以正常编译但无法链接。

包含一个头文件(如果它可以在编译器用来查找头文件的包含路径中找到),所以这很好用。

但是要将两个(对象)文件链接在一起,它必须知道应该链接哪些文件。它应该如何决定使用哪些文件?

这就是在其中创建项目(和其他 IDE)或创建 makefile 的原因。

如果您在“设置 -> 编译器和调试器... -> 全局编译器设置 -> [the_compiler_you_use] -> 其他设置(最右边的选项卡) -> 编译器登录”中打开完整的命令行日志记录,您可以看到发送了哪些命令到编译器/链接器,区别在于单个文件和具有多个文件的项目之间。

顺便说一句:你的书/教程应该解释编译和链接文件所需的步骤,如果包含头文件会发生什么以及如何使用预构建库/dll。


推荐阅读