SDL2: LNK1561: entry point must be defined

后端 未结 6 1877
天命终不由人
天命终不由人 2020-12-09 04:18

I want to compile this code:

#include 

int main(int argc, char* argv[]) {
    return 0;
}

But it can\'t be linked: Erro

相关标签:
6条回答
  • 2020-12-09 04:43

    As a tinky_winki wrote

    Right click on project name -> Properties -> Expand Linker tab -> System -> SubSystem: make sure that it is Console (/SUBSYSTEM:CONSOLE)

    But if you don't expect console with window simply use, /SUBSYSTEM:WINDOWS

    0 讨论(0)
  • 2020-12-09 04:48

    According to this thread on Dream.In.Code:

    Right click on project name -> Properties -> Expand Linker tab -> System -> SubSystem: make sure that it is Console (/SUBSYSTEM:CONSOLE)

    Alternatively, if you want to hide the console window or are debugging a multithreaded application, you should set the SubSystem to Window (/SUBSYSTEM:WINDOW) instead.

    0 讨论(0)
  • 2020-12-09 04:48

    I have found that setting /SUBSYSTEM:CONSOLE is only half of the solution. The second half is to add SDL_MAIN_HANDLED to your additional defines. The clue I used to resolve this can be found in SDL_main.h. Setting SDL_MAIN_HANDLED tell the SDL header files that you've already provided a main function and do not wish for it to redefine its own entry point.

    0 讨论(0)
  • 2020-12-09 04:51

    Project >> Properties >> Linker >> Advanced >> entry point = main and apply

    0 讨论(0)
  • 2020-12-09 05:01

    DON'T #undef main! while its a really bad practice on the SDL side to redefine it, they have good reasons: WinMain is defined on the library side and used to run some init code, helping with compatibility issues. (even more when using different SDL implementations, like Steam's or porting to other platforms like Android)

    So what should you do? When on Windows, you should always include SDL2main.lib before SDL2.lib and make sure your main is in the format:

    int main(int argc, char* argv[]) // CORRECT
    void main(int argc, char* argv[]) // WRONG
    int main(int, char**) // MAY BE CORRECT
    

    Source: SDL2 Windows FAQ

    0 讨论(0)
  • 2020-12-09 05:09

    Open sdl_main.h

    Change

    #define main sdl_main
    

    to

    #define sdl_main main
    

    now it will work with simple int main() but this is bad hooray to short term solutions

    0 讨论(0)
提交回复
热议问题