我目前在使用SDL库的dev c ++编译我的项目时遇到问题,我所做的是首先从此site下载文件SDL2-devel-2.0.3-mingw.tar.gz
(MinGW 32/64位),然后在
工具 - >编辑器选项,然后在“Directories
”部分中,我在x86_64-w64-mingw32/lib
'标签中包含了libraries
,在我提取下载后,在x86_64-w64-mingw32/include
'标签中添加了C++ includes
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
丢失了所以我从互联网下载了所述文件并将其粘贴到项目所在的位置,因此程序最终编译但我不是得到任何输出,因为它应该打印“嗨”
我收到了函数console_main
中的错误以及对sdl_main
的未定义引用,任何人都可以帮我纠正这个问题。
答案 0 :(得分:1)
使用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 GUI
或Win32 Console
应用类型。
创建项目后,我假设您在链接器下的项目参数中添加了以下命令行:-lmingw32 - -lSD2main -lSDL2
然后将SDL2.dll
放在您的可执行文件所在的项目目录中。
在源代码中SDL2.h
开始之前加入main(int argc, char **argv)
。