# undefined reference to WinMain@16



## napsi (30. April 2014)

Hallo!

Habe bei einem C-Programm folgenden Fehler beim Kompilieren bekommen:

undefined reference to WinMain@16


```
int gc(int x)
{
    int y=0;
    x *= y > 0;
    if (!(y>>4)) gc(y++);
    y += x>>2;      
    return(y);
}
```

Was mache ich falsch?

Zur Erklärung, bin kein C-Programmierer, deshalb wird dieser Fehler vermutlich für die Meisten von Euch sofort klar sein, aber das ist Teil eines Projektes, mit welchem ich mich befasse.

Ich hoffe auf Eure Hilfe

Danke schon im Vorraus.

glg.

Gerald


----------



## Cromon (30. April 2014)

Hallo Gerald

Wenn du in Visual Studio ein Projekt mit Subsystem 'IMAGE_SUBSYSTEM_WINDOWS_GUI' erstellst wird erwartet, dass der Einstiegspunkt WinMain vorhanden ist.

Generell funktioniert dein Programm nicht, da es kein Programm ist. Es ist eine Funktion, aber du hast nirgendwo einen Einstiegspunkt definiert.

Viele Grüsse
Cromon


----------



## napsi (30. April 2014)

Hallo Cromon!
Hallo an Alle!

Danke für die Antwort. 
Ich habe es nicht im Visual Studio sondern im Dev-C++ gemacht. 

Die Vorgabe ist, dass im oben stehenden Code ein "Schlüsselwort" fehlt, damit am Ende eine Zahl ausgeworfen wird. Ich wollte es Compilieren, damit ich auch verstehen kann, was da passiert,...

Kurz gesagt, ich brauche das angeblich fehlende Schlüsselwort, welches hier verlangt wird.

Bitte um weitere Hilfe,

lg.

Gerald


----------



## ibafluss (30. April 2014)

Hallo,

Bei einem C-Programm gibt es immer genau einen Einstiegspunkt. Das ist main(). Der Code in dieser Methode wird vom Programm ausgeführt. Du hast hier eine Funktion gc() definiert. Das ist völlig in Ordnung, nur musst du auch ein main() bereitstellen. Im main() kannst du dann deine Funktion aufrufen.

Bsp.:

```
int main()
{
     gc();

     return 0;
}
```

Lg


----------



## Endurion (1. Mai 2014)

Für Windows geschriebene C-Programme haben, wie oben beschrieben, als Einstiegspunkt eine WinMain-Funktion.

Dort ist eine schöne Beschreibung: http://msdn.microsoft.com/de-de/library/windows/desktop/ff381406(v=vs.85).aspx

Es sollte reichen, den Body unten im Beispiel zu kopieren und einen Aufruf deiner Funktion einzubauen.


----------

