我正在尝试编译一个简单的“ hello world” C ++程序,但是当我使用g ++命令时,出现错误“对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;
}
您的错误不是编译器,而是链接器错误。这意味着它仍然可以正常编译,但无法链接。
包含头文件(如果可以在编译器用来查找头的包含路径中找到它,因此可以正常工作。
但是要将两个(对象)文件链接在一起,必须知道应该链接哪些文件。以及如何决定要使用哪些文件?
这就是在其中(和其他IDE的)中创建项目或创建Makefile的原因。
如果您在“设置->编译器和调试器...->全局编译器设置-> [the_compiler_you_use]->其他设置(最右边的选项卡)->编译器登录”中打开完整的命令行记录,则可以看到哪些命令被发送到编译器/链接器,其中单个文件与具有多个文件的项目之间的区别在于。
顺便说一句:您的书/教程应解释编译和链接文件所需的步骤,如果包含标题,会发生什么,以及如何使用预构建库/ dll。