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

问题描述 投票:6回答:10

我正在使用Code :: Blocks学习C ++,每次我尝试创建一个新类时,都会收到一条错误消息:

undefined reference to `WinMain@16'

这是我一直在使用的代码:

主类

#include "Lime.h"
#include <iostream>
using namespace std;
int main()
{
    Lime lime;
    return 0;
}

Lime Class(.ccp):

#include "Lime.h"
#include <iostream>
using namespace std;
Lime::Lime()
{
    cout<<"Hi!";
}

Lime Header(.h):

#ifndef LIME_H
#define LIME_H
class Lime
{
    public:
        Lime();
};
#endif

如果有人知道,如何解决它,请告诉我!

c++ codeblocks
10个回答
10
投票

我只是使用相同的教程完全相同的问题。

怎么解决这个?我发现重启CodeBlocks摆脱了这个错误。它与您创建文件或任何语法的方式无关。重启可以解决问题。

为什么会这样?如果我不得不疯狂猜测,我认为CodeBlocks确实创建了header / cpp文件,但它并没有以适当的方式将它们链接到您的项目,使它们可用(尽管它确实要求您将它们链接到创建项目后的项目)。这是猜测。

我知道有些人已经通过说你正在创建一个Windows GUI控制台应用程序而不是控制台应用程序来评论这个,但事实并非如此。正如Bucky在视频中解释的那样,我也在创建一个简单的控制台应用程序。


0
投票

这个问题在我看来是因为“main.cpp”没有包含在项目中。如果再次看到该错误,只需确保项目中包含所有文件即可。


9
投票

试试这个:Settings-> Compiler,点击标签Build options,选择复选框

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

附:

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

  • 添加项目路径
  • 标题和实现文件应位于同一文件夹中

但是,请勿选择

使用相对路径


3
投票

转到菜单栏上的"Project" --> "Build Options . . ." 转到"Linker Settings"标签 在"Link libraries"面板中,单击"Add" 在即将到来的领域写下这个: mingw32;libSDL.a;libSDLmain.a 转到"Search directories" --> "Linker"标签 在那里添加你的MinGW库文件夹!祝好运!!


2
投票

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

我对CodeBlocks并不熟悉,但在项目设置的某个地方会有一个设置,允许你指定程序运行的子系统。它可能是“Windows”,其中一个选项应该是“Console”,如果你真的想要一个控制台应用程序,你可以将其更改为。从您使用cout的事实判断我怀疑控制台应用程序是您想要的。如果是,那么你可以留下main作为你的切入点。

您还可以在创建新项目时选择控制台应用程序。 This screenshot和文本应该有所帮助。

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


0
投票

我通过打开编译器设置对话框并单击“确定”来修复此问题。没有改变。它确实有效!

但是,如果再次添加新类,则会重复此问题。因此,每次创建新类时,只需打开/关闭设置对话框。


0
投票

它非常简单,对我有用...你只需选择打开代码块后出现在开始选项卡中的“打开现有项目”,然后选择(你的项目名称).cbp文件......程序将打开你的项目以及类名.h和.cpp文件......你构建并运行...瞧你的代码将工作得很好..


0
投票

我之前遇到过这些问题,我的解决方案是创建一个项目,如果你有许多包含头文件的文件。通过这种方式,当您编写#include“Burrito.h”代码时,编辑器将在您的项目中查找头文件。特别是对于Dev-cpp编辑器。


0
投票

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

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

我这样做了,我现在工作得很完美


0
投票

修复:未定义的对“WinMain @ 16”的引用或对codeblocks中的“class-name :: class-name()”的未定义引用CodeBlocks中的错误

我有同样的问题。实际上它很容易修复。在菜单栏上转到

project - > build option把复选标记放在Have g ++上遵循C ++ 11 ISO C ++语言标准[-std = c ++ 11] 然后单击确定并构建并运行您的项目[F9]。 click here to see screen capture image. Separate Class files code blocks fix

© www.soinside.com 2019 - 2024. All rights reserved.