kostenloser Webspace werbefrei: lima-city


[Linker Error] undefined reference to 'winmain@16'

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    infinitysounds

    Kostenloser Webspace von infinitysounds

    infinitysounds hat kostenlosen Webspace.


    Hello Guys,

    I've just started programming C with Dev-C++ and am just trying to program a kind of role play (only fighting, nothing very good)
    I had to create some Librarys and stuff and because of the possibility to have the same Library in the code, I used
    #ifndef


    and
    #define


    and after the Main function, I ended with
    #endif


    this is the whole code:
    #include <stdio.h>
    #include <Character.h>
    #include <stdlib.h>
    #include <Inventory.h>
    
    #ifndef Character_h_INCLUDED
    #define Character_h_INCLUDED
    #ifndef Inventory_h_INCLUDED
    #define Inventory_h_INCLUDED
    #ifndef stdlib_h_INCLUDED
    #define stdlib_h_INCLUDED
    #ifndef stdio_h_INCLUDED
    #define stdio_h_INCLUDED
    
    int main()
    {
      Health=15;
      Armor=1;
      Attack=Sword;
      Agility=8;
      Constitution=10;
      Strength=11;
      Inventory = Sword&&Gold2;
      printf("gotcha\n");
      system("PAUSE");	
      return 0; 
      
    }
      #endif
      #endif
      #endif
      #endif





    So, after compiling, it says:

    [Linker Error] undefined reference to 'WinMain@16'

    I tried some things and came to the solution, that #endif can't be after the main function,
    but it also cannot be in the main function,
    so I guess, that I have to put #endif somewhere else, but where?
    before the main function doesn't make sense, because then, I could leave that out as well.
    Can anyone help me with this?

    Greets,

    Infinitysounds

    PS: Of course I searched the FAQ and the Forums but I didn't find a solution.

    PPS: Sorry, dass es auf Englisch ist.


    Beitrag zuletzt geändert: 29.4.2011 21:41:11 von infinitysounds
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hello infinitysounds,

    at first: it doesn't make any sense to put header guards into modules (*.c or *.cpp files).
    It looks like you are programming in C, so I'll give you a header template:
    /* replace HEADERNAME by the real filename: */
    #ifndef _HEADERNAME_H_
    #define _HEADERNAME_H_
    
    /* put includes needed by the function declarations here */
    
    /* guard for c++ compilers */
    #ifdef __cplusplus
    extern "C"
    {
    #endif
    
    /* typdefs, macros, function declarations... */
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif

    It is important, that the *.h file only contains the function declarations (except you declare them static). The function definitions have to be in the corresponding *.c file.
    The next point is the error message: undefined reference to 'WinMain@16'.
    That means the linker is searching for the function
    int CALLBACK WinMain(
      __in  HINSTANCE hInstance,
      __in  HINSTANCE hPrevInstance,
      __in  LPSTR lpCmdLine,
      __in  int nCmdShow
    );
    as the program's entry point but you have just
    int main()
    That means, your compiler/linker is thinking you are writing a Windows program (with GUI) instead of a normal c-console application. You have two choices now: Tell your compiler that it is a console program (or change the entry point) so it will use int main() or use the standard WinMain() function. But if you use WinMain() you can not print easily to the console window!

    PS: Excuse my bad English.

    Beitrag zuletzt geändert: 29.4.2011 22:23:29 von darkpandemic
  4. Autor dieses Themas

    infinitysounds

    Kostenloser Webspace von infinitysounds

    infinitysounds hat kostenlosen Webspace.

    Ich habe bereits versucht, die console Application einzuschalten, aber das hat nichts gebracht, also werde ich bei gelegenheit an der Stelle jene verändeung vornehmen.
    Ich hoffe, dass wenn jemand noch eine andere Idee hat, dass er es mir dann sagt, wenn ich die lösung habe, sage ich es.

    PS: ich kann deutsch, aber ich hatte diese Anfrage auf sourceforge verschickt und hatte gedacht, dass hier eh alle gut genug englisch können, um das zu verstehen, also dachte ich ich brauche es nicht übersetzen.
  5. Hallo infinitysounds,

    ich weis ja, dass Du deutsch kannst.
    Hast Du schonmal versucht alles auszukommentieren und nur ein normales Hello-World-Programm reinzuschreiben:
    #include <stdio.h>
    
    int main()
    {
        printf("Hello world!");
        return 0;
    }
    Evtl. kannst Du ja auch mal Versuchen ein neues Projekt zu machen (diesmal mit Konsole als Vorgabe) und alles reinzukopieren.

    Edit: Kleine Anmerkung am Rande: Sword&&Gold2 ist wahrscheinlich 0 oder etwas was Du eigentlich nicht haben willst. (hat nichts mit dem Thema zu tun)

    Beitrag zuletzt geändert: 29.4.2011 22:54:59 von darkpandemic
  6. Autor dieses Themas

    infinitysounds

    Kostenloser Webspace von infinitysounds

    infinitysounds hat kostenlosen Webspace.

    Hallo Welt war mein erstes Programm und das zweite hab ich schon tausendmal versucht, trotzdem danke.
    Das andere werde ich sehen, wenn es funktioniert...
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!