使用 Dev C++ 时未定义对 'SDL_main' 的引用

Undefined reference to 'SDL_main' while using Dev C++

我目前在使用 SDL 库的 dev c++ 中编译我的项目时遇到问题,我所做的是首先从这个 site 下载文件 SDL2-devel-2.0.3-mingw.tar.gz(MinGW 32/64 位),然后在

工具 -> 编译器选项,然后在“Directories”部分,我在“libraries”选项卡中包含 x86_64-w64-mingw32/lib,在“[=18=”选项卡中包含 x86_64-w64-mingw32/include ]' 选项卡后,我将下载的文件夹解压缩到 C 盘中。

最后,我在项目选项中添加了这些链接器

-lmingw32 -lSDL2main -lSDL2

但是在编译这段代码之后:

#include<stdio.h>
#include<SDL2/SDL.h>
int main(int argc, const char* argv[]) {
    printf("hi\n");
    return 0;
}

编辑:

我尝试在 char* 之前删除 const,它说 sdl.dll 丢失了,所以我从互联网上下载了上述文件并将其粘贴到项目所在的位置,所以程序终于编译好了,但我我没有得到任何输出,因为它应该打印 "Hi"

我在 Function console_main 和 undefined reference to sdl_main 中遇到错误,谁能帮我解决这个问题。

这个错误在使用 int main() 而不是 :

时很常见
int main(int argc, char **argv) 
//or
int main(int argc, char *argv[])

尝试用其中任何一个替换它。

在后台,SDL 定义了一个宏 #define main SDL_main 来重命名您的 main(int argc, char *argv[]) 函数,这样它就不会与它自己的 main() 函数(用于 SDL 初始化)发生冲突。如果您改用 main(),则宏不会对其进行修改,因此找不到 SDL_main

如果不起作用,请按照下列步骤操作:

  • 创建项目时,请确保选择 Win32 GUIWin32 Console 应用程序类型。

  • 创建项目后,我假设您在链接器下的项目参数中添加了以下命令行:-lmingw32 - -lSD2main -lSDL2

  • 然后将 SDL2.dll 放入您的可执行文件所在的项目目录中。

  • 在您的源代码中 main(int argc, char **argv) 开始之前包含 SDL2.h