Dev-C++ 配置SDL开发环境

首先下载SDL的依赖库和运行库,地址为:https://www.libsdl.org/download-1.2.php点击打开链接,目前SDL有两个版本SDL 2.0和SDL 1.2,SDL2.0好像找不到 Linux版本的库,所以建议你们下载SDL 1.2 版本,

下载的是Development Libraries开发库,如果想看一下SDL的源码也可以把Scoure Code下面的文件下载下来,我们用的是Dev-c++开发IDE所以下载SDL-devel-1.2.15-mingw32.tar.gz (Mingw32)

下载完成之后,我们将解压后的文件复制到D:盘根目录下(注意复制的目录不要带中文,也不要带空格),并改名为SDL

然后我们打开Dev-C++ IDE,点击菜单栏的 工具->编译选项 打开页面


这里一定要选择32位的编译器,然后点击这个窗口中的“目录“选项卡,点击目录下面的库


然后去找SDL的库,这个库对应的是SDL下的lib目录,添加结果如下图:


然后点击C包含文件,添加SDL头文件,路径在SDL下的include文件夹,配置结果如下:


接着配置C++包含文件,对应的目录和C包含文件一样:


最后我们点击下面的确定完成配置。

我们写一个测试程序编译运行一下,发现编译不通过,

C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0x15): undefined reference to `SDL_Init'
C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0x5b): undefined reference to `SDL_SetVideoMode'
C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0x8f): undefined reference to `IMG_Load'
C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0xd2): undefined reference to `SDL_UpperBlit'
C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0xfd): undefined reference to `SDL_UpdateRect'
C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0x111): undefined reference to `SDL_WaitEvent'
C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0x15d): undefined reference to `SDL_FreeSurface'
C:\Users\ADMINI~1\AppData\Local\Temp\ccbrCzQu.o SDL_test.cpp:(.text+0x168): undefined reference to `SDL_FreeSurface'
D:\Program Files\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib32\libmingw32.a(lib32_libmingw32_a-crt0_c.o) In function `main':
18 C:\crossdev\src\mingw-w64-v3-git\mingw-w64-crt\crt\crt0_c.c undefined reference to `WinMain@16'
C:\Users\Administrator\Desktop\collect2.exe [Error] ld returned 1 exit status

我们还需要配置一下SDL的连接库,工具---编译器选项


然后我们在编译,编译通过,我们运行又出错了,系统提示少了运行时的依赖库SDL.dll,


那解决的办法就是找到这个dll,把它和可执行文件.exe放在一起

现在可以运行了:



SDL资料百度云盘分享http://pan.baidu.com/s/1c2dSGNm


### 回答1: 这个错误通常是因为没有定义WinMain函数导致的。WinMain函数是Windows程序的入口点,如果没有定义这个函数就会出现这个错误。你需要在你的程序中定义WinMain函数,或者使用一个命令行程序的入口点main函数。如果你确信你已经定义了WinMain函数,那么可能是你的编译器没有正确链接相关的库文件,你需要检查一下你的编译器设置。 ### 回答2: 这个错误是由于在编译代码时找不到`WinMain`函数的引用所导致的。 `WinMain`是Windows程序的入口函数,它负责程序的初始化和消息处理。在使用MinGW-w64编译器时,默认的入口函数是`main`函数,而不是`WinMain`函数。因此,编译器在链接时会找不到`WinMain`的引用,从而报错。 要解决这个错误,有两种方法: 1. 将程序的入口函数改为`main`函数。在C语言中使用`main`函数作为程序的入口是标准的做法,而且在MinGW-w64编译器中也是默认支持的。将程序中的`WinMain`函数改为`main`函数,并确保程序的入口函数的返回类型为`int`,并且接受两个参数`int argc`和`char* argv[]`。这样编译器就能找到入口函数的引用了。 2. 如果你希望使用`WinMain`作为程序的入口函数,可以在编译时加上参数`-mwindows`。这个参数告诉编译器要生成一个Windows程序,从而链接`WinMain`函数的引用。可以在命令行或者编译器配置文件中添加这个参数,具体方法可以参考MinGW-w64的文档。 无论选择哪种方法,你都需要确保你的代码中只有一个入口函数,并且它的返回类型和参数与编译器的要求匹配。 希望这个回答能够帮助你解决问题! ### 回答3: 在这个问题中,你遇到了一个错误信息:undefined reference to `WinMain'。这个错误通常在使用MinGW编译器时出现,它表示你的程序缺少一个入口点函数WinMain。 WinMain是Windows程序的入口点函数,它负责初始化程序并处理窗口消息。如果你的程序是一个控制台应用程序,应该使用main函数作为入口点,而不是WinMain函数。 出现这个错误的原因可能是你的程序的链接选项不正确。链接选项指定了编译器应该链接哪些库文件,以及程序的入口点函数是什么。在这种情况下,编译器试图链接一个包含WinMain函数的库文件,但是找不到对应的函数定义,从而导致了undefined reference错误。 要解决这个问题,你可以尝试以下几个方法: 1. 确认编译器选项是否正确:检查你的编译器选项,确保没有指定错误的库文件或入口点函数。 2. 检查程序的入口点函数:确认你的程序使用了正确的入口点函数。如果你的程序是一个控制台应用程序,应该使用main函数作为入口点。 3. 确认库文件是否正确:如果你的程序确实需要使用WinMain函数,那么你需要确保已经链接了正确的库文件。这通常是指在链接选项中指定了正确的库文件路径。 总之,undefined reference to `WinMain'错误表明你的程序缺少一个入口点函数WinMain。通过检查编译器选项、入口点函数和库文件路径,你应该能够解决这个问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值