C++未定义的对WinMain @ 16的引用(Code :: Blocks)

Ato*_*tom 6 c++ codeblocks

我正在使用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在视频中解释的那样,我也在创建一个简单的控制台应用程序.


Mil*_* Lu 9

试试这个: Settings- > Compiler,单击选项卡Build options,选中复选框

将当前编译文件的目录显式添加到编译器搜索目录中

PS

下次创建新类时,请在该File policy部分中确保选中复选框

  • 添加项目路径

  • 标题和实现文件应位于同一文件夹中

但是,请勿选择

使用相对路径


Sea*_*ean 2

看起来您正在构建 Windows 应用程序,而不是控制台应用程序。因此,您需要一个WinMain函数作为程序入口点,而不是main.

我对 CodeBlocks 不太熟悉,但是在项目设置中的某个地方会有一个设置,可以让您指定程序运行的子系统。它可能会说“Windows”,其中一个选项应该是“Console”,所以如果你真的想要一个控制台应用程序,你可以将其更改为那样。从您使用的事实来看,cout我怀疑控制台应用程序就是您想要的。如果是,那么您可以离开main作为您的入口点。

创建新项目时,您还可以选择控制台应用程序。此屏幕截图和文字应该有所帮助。

注意:我刚刚检查了更多内容,Project/target option您可以转到“构建目标”选项卡并查看您正在构建的子系统。它在选项卡上称为“类型”,下拉选项之一是“控制台应用程序”。

  • 我**确实**选择了“控制台应用程序”,并且在目标选项中显示“控制台应用程序”。 (2认同)