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

时间:2014-02-01 16:46:50

标签: c++ codeblocks

我正在使用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

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

11 个答案:

答案 0 :(得分:10)

我在使用完全相同的教程时遇到了完全相同的问题。

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

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

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

答案 1 :(得分:9)

试试这个: Settings - &gt; Compiler,点击标签Build options,选中复选框

  

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

P.S。

下次在File policy部分创建新课程时,请务必选中复选框

  
      
  • 添加项目路径

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

  •   

但是,请选择

  

使用相对路径

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

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

您还可以在创建新项目时选择控制台应用程序。 This screenshot和文字可以提供帮助。

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

试试这个:设置 - &gt;编译器,单击选项卡构建选项,选中复选框

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

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

答案 8 :(得分:0)

修复:对WinMain @ 16&#39;的未定义引用或未定义的引用&quot; class-name :: class-name()&#39; in codeblocks CodeBlocks中的错误

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

  

项目 - &gt; 构建选项   在上使用复选标记让g ++遵循C ++ 11 ISO C ++语言标准[-std = c ++ 11]
  然后单击确定并构建并运行项目 [F9] 。   click here to see screen capture image. Separate Class files code blocks fix

答案 9 :(得分:0)

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

答案 10 :(得分:0)

我也有这个问题! 问题是我将主函数放在一个特定的名称空间下,而我的类却不属于该名称空间,并且看起来它们没有“主”名称。删除命名空间/将类添加到同一命名空间后,构建问题就消失了。