Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ undefined reference to WinMain@16 (Code::Blocks)

Tags:

c++

codeblocks

I'm learning C++ with Code::Blocks, and everytime i try to create a new class, I get an error message saying:

undefined reference to `WinMain@16'

Here's the code I've been using:

Main Class

#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

If someone knows, how to fix it, please, tell me!

like image 220
Atom Avatar asked Feb 01 '14 16:02

Atom


People also ask

How do you fix a undefined reference in C++?

When we compile these files separately, the first file gives “undefined reference” for the print function, while the second file gives “undefined reference” for the main function. The way to resolve this error is to compile both the files simultaneously (For example, by using g++).

What is the meaning of undefined reference to WinMain 16?

WinMain@16 is referring to the "real" entry point of a windows exe. In a console application this is provided by C-runtime library. The first thing I would look at is that you are telling your compiler to build a console app.

What does undefined reference to WinMain mean in C?

The error means that the compiler try to find WinMain() but it didn't. Either you didn't declare int main() Or your project type is something other than Console. ( Normally Win32GUI) 20th October 2020, 3:52 AM.

What WinMain 16?

WinMain() is the traditional start point for windows programs (rather than main() which is standard C) and WinMain@16 is that name as adorned when compiling and linking to produce a 16 bit windows program.


1 Answers

I just had the exact same problem working with the exact same tutorials.

How to solve this? I found that restarting CodeBlocks gets rid of this error. It has nothing to do with how you created the files or any of your syntax. A restart does the trick.

Why does this occur? If I had to take a wild guess, I would think that CodeBlocks does indeed create the header/cpp files, it does not however link them to your project in a proper way that makes them usable (although it does ask you to link them to the project after you create them). This is a guess.

I understand that some people have commented on this by saying that you're creating a Windows GUI console application instead of a console application, but this is not the case. I too was creating a simple console application as Bucky explains in the videos.

like image 101
user3308043 Avatar answered Sep 17 '22 10:09

user3308043