我正在使用Code :: Blocks学习C++,每次我尝试创建一个新类时,都会收到一条错误消息:
undefined reference to `WinMain@16'
Run Code Online (Sandbox Code Playgroud)
这是我一直在使用的代码:
主类
#include "Lime.h"
#include <iostream>
using namespace std;
int main()
{
Lime lime;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Lime Class(.ccp):
#include "Lime.h"
#include <iostream>
using namespace std;
Lime::Lime()
{
cout<<"Hi!";
}
Run Code Online (Sandbox Code Playgroud)
Lime Header(.h):
#ifndef LIME_H
#define LIME_H
class Lime
{
public:
Lime();
};
#endif
Run Code Online (Sandbox Code Playgroud)
如果有人知道,如何解决它,请告诉我!
use*_*043 10
我只是有确切的与工作同样的问题,确切相同的教程.
怎么解决这个?我发现重启CodeBlocks摆脱了这个错误.它与您创建文件或任何语法的方式无关.重启可以解决问题.
为什么会这样?如果我不得不疯狂猜测,我认为CodeBlocks确实创建了header/cpp文件,但它并没有以适当的方式将它们链接到您的项目,使它们可用(尽管它确实要求您将它们链接到创建项目后的项目).这是猜测.
我知道有些人已经通过说你正在创建一个Windows GUI控制台应用程序而不是控制台应用程序来评论这个,但事实并非如此.正如Bucky在视频中解释的那样,我也在创建一个简单的控制台应用程序.
试试这个:
Settings- > Compiler,单击选项卡Build options,选中复选框
将当前编译文件的目录显式添加到编译器搜索目录中
PS
下次创建新类时,请在该File policy部分中确保选中复选框
添加项目路径
标题和实现文件应位于同一文件夹中
但是,请勿选择
使用相对路径
看起来您正在构建 Windows 应用程序,而不是控制台应用程序。因此,您需要一个WinMain函数作为程序入口点,而不是main.
我对 CodeBlocks 不太熟悉,但是在项目设置中的某个地方会有一个设置,可以让您指定程序运行的子系统。它可能会说“Windows”,其中一个选项应该是“Console”,所以如果你真的想要一个控制台应用程序,你可以将其更改为那样。从您使用的事实来看,cout我怀疑控制台应用程序就是您想要的。如果是,那么您可以离开main作为您的入口点。
创建新项目时,您还可以选择控制台应用程序。此屏幕截图和文字应该有所帮助。
注意:我刚刚检查了更多内容,Project/target option您可以转到“构建目标”选项卡并查看您正在构建的子系统。它在选项卡上称为“类型”,下拉选项之一是“控制台应用程序”。