SDL 2未定义参考"WinMain @ 16"和几个SDL功能

Mih*_*hai 3 c++ sdl

我刚刚安装了SDL 2,我遇到了一些严重的问题.这是我的代码:

#include <SDL2\SDL.h>

int main(int argc, char* argv[]){
SDL_Init( SDL_INIT_VIDEO );
SDL_Quit();
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我无法编译,因为我收到标题中描述的错误:

obj\Debug\main.o||In function SDL_main':|  
C:\Users\myuser\Desktop\test 2000\main.cpp|5|undefined reference to SDL_Init'|
C:\Users\myuser\Desktop\test 2000\main.cpp|7|undefined reference to SDL_Quit'|
c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(main.o):main.c|| undefined reference to WinMain@16'|  
||=== Build finished: 3 errors, 0 warnings ===|
Run Code Online (Sandbox Code Playgroud)

小智 6

我想你要

#define SDL_MAIN_HANDLED
Run Code Online (Sandbox Code Playgroud)

在主文件中,在该行之前

#include <SDL2/SDL.h>
Run Code Online (Sandbox Code Playgroud)

来自:https : //stackoverflow.com/a/32343111/5214543

  • 这应该被标记为正确答案,谢谢! (3认同)

小智 6

您需要以相同的顺序将这些添加到链接器库中:

mingw32
SDL2main
SDL2
Run Code Online (Sandbox Code Playgroud)

请注意,顺序很重要。


小智 5

发布编译器命令.例如:g ++/gcc ....

你可能没有链接库.

http://content.gpwiki.org/index.php/SDL:Tutorials:Setup 你应该有一个lib的路径,包含在ide中.(我看到你正在使用代码块)

添加到链接器设置:-lmingw32 -lSDLmain -lSDL

http://www.sdltutorials.com/sdl-tutorial-basics

  • 我看到你给我看的教程是关于 sdl 1.2 的。我说的是 sdl 2.0 ,如标题所示。据我所知,我在这些链接器之前尝试过,但它们不起作用。我相信新的类似于: -lmingw32 -lSDL2main -lSDL2 。但即便如此,还是少了点什么…… (2认同)
  • 在代码块 10.05 上:“设置”-&gt;“编译器和调试器”-&gt;“链接器设置”。在“链接器库”上按“添加”按钮并按此顺序单独添加“mingw32”、“SDL2main”、“SDL2”、“SDL2_image”,而没有“”。在“其他链接器选项”上,添加“-mwindows”没有“”。还要确保你在“搜索目录”上链接了正确的文件夹。在“编译”面板上,从你的电脑“添加”到“包含”文件夹的链接,在“链接器”面板上,“添加”将新文件(来自 sdl_img 和 mix 文件夹)添加到原始 SDL 文件夹后,“lib”的链接 (2认同)

Yas*_*pta 5

尽管接受的答案有效(如果您完全遵循它或阅读评论),但有一个警告:您必须按照给定的链接库的顺序进行操作

g++ 01_hello_SDL.cpp -I{add correct path here}/include/SDL2 -L{add correct path here}/lib -lmingw32 -lSDL2main -lSDL2

如果您不希望控制台与窗口一起运行,请添加-mwindows到选项