2016-07-29 12 views
0

Kann ein Programm ohne main() Funktion geschrieben werden?Fehler Undefinierter Verweis auf 'WinMain @ 16'

Ich habe diesen Code geschrieben und gespeichert einen Dateinamen als withoutmain.c und erhalte eine Fehlermeldung als

undefined reference to '[email protected]'" 

Mein Code

#include<stdio.h> 
    #include<windows.h> 
    extern void _exit(register int code); 
    _start(){ 
     int retval; 
     retval=myFunc(); 
     _exit(retval); 
    } 
    int myFunc(void){ 
    printf("Hiii Pratishtha"); 
    return 0; 
    } 

Bitte senden Sie mir die Lösung dieses Problems und auch der richtige Speicher Aufbau von Code und was am Compiler-Ende dieses Programms passiert. Vielen Dank!

+0

Die Lösung ist einfach: schreibe kein Programm ohne 'main()'. –

+0

Es muss eine Möglichkeit geben, den Einstiegspunkt in Ihren Linker-Optionen anzugeben, aber für GCC weiß ich es nicht. Warum schaust du nicht in der Dokumentation nach? – Medinoc

+0

Mögliches Duplikat von [So ändern Sie den Einstiegspunkt des C-Programms mit gcc?] (Http://stackoverflow.com/questions/7494244/how-to-change-entry-point-of-c-program-with-gcc) – Medinoc

Antwort

0

Kann ein Programm ohne main() -Funktion geschrieben werden?

Ja, es kann ein C-Programm ohne Hauptfunktion geben. Ich würde zwei Lösungen vorschlagen .......

1) Mit einem Makro, das

#include<stdio.h> 
#include<windows.h> 
#define _start main 
extern void _exit(register int code); 

int myFunc(void){ 
    printf("Hiii Pratishtha"); 
    return 0; 
} 

int _start(){ 
    int retval; 
    retval=myFunc(); 
    _exit(retval); 
} 

2) Using Entry Point (Assuming you are using visual studio)

So legen Sie diese Linkeroption in der Haupt definiert Visual Studio Entwicklungsumgebung

/ENTRY:function 

Eine Funktion Diese Anweisung gibt eine benutzerdefinierte Startadresse für eine EXE-Datei oder DLL an.

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen finden Sie unter Festlegen der Visual C++ - Projekteigenschaften.
  2. LKlicken Sie auf den Linker-Ordner.
  3. Klicken Sie auf die Eigenschaftenseite Erweitert.
  4. Ändern Sie die Eintrittspunkt-Eigenschaft.

ODER

wenn Sie gcc dann

-Wl,-e_start 

die -Wl verwenden, ..., was passiert Argumente an den Linker, und der Linker nimmt einen -e Argument den Eintrag bestätigen Funktion

Verwandte Themen