我正在使用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
如果有人知道,如何解决它,请告诉我!
我只是使用相同的教程完全相同的问题。
怎么解决这个?我发现重启CodeBlocks摆脱了这个错误。它与您创建文件或任何语法的方式无关。重启可以解决问题。
为什么会这样?如果我不得不疯狂猜测,我认为CodeBlocks确实创建了header / cpp文件,但它并没有以适当的方式将它们链接到您的项目,使它们可用(尽管它确实要求您将它们链接到创建项目后的项目)。这是猜测。
我知道有些人已经通过说你正在创建一个Windows GUI控制台应用程序而不是控制台应用程序来评论这个,但事实并非如此。正如Bucky在视频中解释的那样,我也在创建一个简单的控制台应用程序。
这个问题在我看来是因为“main.cpp”没有包含在项目中。如果再次看到该错误,只需确保项目中包含所有文件即可。
试试这个:Settings
-> Compiler
,点击标签Build options
,选择复选框
将当前编译文件的目录显式添加到编译器搜索目录中
附:
下次在File policy
部分创建新类时,请确保选中复选框
- 添加项目路径
- 标题和实现文件应位于同一文件夹中
但是,请勿选择
使用相对路径
转到菜单栏上的"Project" --> "Build Options . . ."
转到"Linker Settings"
标签
在"Link libraries"
面板中,单击"Add"
在即将到来的领域写下这个: mingw32;libSDL.a;libSDLmain.a
转到"Search directories" --> "Linker"
标签
在那里添加你的MinGW库文件夹!祝好运!!
看起来您正在构建Windows应用程序,而不是控制台应用程序。因此,您需要一个WinMain函数作为程序入口点而不是main
。
我对CodeBlocks并不熟悉,但在项目设置的某个地方会有一个设置,允许你指定程序运行的子系统。它可能是“Windows”,其中一个选项应该是“Console”,如果你真的想要一个控制台应用程序,你可以将其更改为。从您使用cout
的事实判断我怀疑控制台应用程序是您想要的。如果是,那么你可以留下main
作为你的切入点。
您还可以在创建新项目时选择控制台应用程序。 This screenshot和文本应该有所帮助。
注意:我刚刚检查了一些,在Project/target option
中,您可以转到“构建目标”选项卡,查看您正在构建的子系统。它在选项卡上称为“类型”,其中一个下拉选项将是“控制台应用程序”。
我通过打开编译器设置对话框并单击“确定”来修复此问题。没有改变。它确实有效!
但是,如果再次添加新类,则会重复此问题。因此,每次创建新类时,只需打开/关闭设置对话框。
它非常简单,对我有用...你只需选择打开代码块后出现在开始选项卡中的“打开现有项目”,然后选择(你的项目名称).cbp文件......程序将打开你的项目以及类名.h和.cpp文件......你构建并运行...瞧你的代码将工作得很好..
我之前遇到过这些问题,我的解决方案是创建一个项目,如果你有许多包含头文件的文件。通过这种方式,当您编写#include“Burrito.h”代码时,编辑器将在您的项目中查找头文件。特别是对于Dev-cpp编辑器。
试试这个:Settings-> Compiler,单击选项卡Build options,选中复选框
将当前编译文件的目录显式添加到编译器搜索目录中
我这样做了,我现在工作得很完美
修复:未定义的对“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