在Visual Studio.NET 2010 Express中使用SDL扩展库

拥有回忆 提交于 2021-01-04 09:27:43
“在本节课中,你将学会安装SDL_image扩展库。如果你掌握了安装这一个扩展库的方法,那么你将能够安装所有的扩展库。
1向下滚动到Binary部分,下载Windows开发包。

图片

每个扩展库都有3个必备的部分:

1.头文件(*.h) 2.静态库文件(*.lib) 3.动态库文件(*.dll)
无论你在安装哪个扩展库,它们的安装方法都几乎一模一样。打开zip压缩包,里面应该有一个文件夹。打开这个文件夹,里面应该包含两个子文件夹。2首先,打开 include子文件夹,你会看到一个头文件。将这个头文件解压出来,并把它与你在第一课中从SDL目录中解压出来的其它头文件放到同一个文件夹中。例如,我将 SDL 1.2.12解压到" C:\",那么我会将头文件“ SDL_image.h” (或者是“ SDL_ttf.h”、 “ SDL_mixer.h”)放到“ C:\SDL-1.2.12\include\SDL\”。3下面,将压缩包中的 lib子文件夹中的 lib 文件解压到你的 SDLlib文件夹中。在我的例子中,那就是“ C:\SDL-1.2.12\lib\”。4现在将压缩包中所有的dll解压出来,并将它们与你的exe放到同一个文件夹中。

和前面的一样,你可以把它们拷贝到“C:\WINDOWS\SYSTEM32”下 (对于64位Windows系统,那就是“C:\Windows\SysWOW64”),这样你的SDL应用就可以找到这些dll,哪怕它们不在同一个文件夹中。


但这样会有一个问题:如果你有多个使用不同版本SDL库的应用程序,这会导致版本冲突。如果你将一个旧版的SDL放于System32中,而应用程序使用的是新版的SDL,这必然会导致问题。通常情况下,你需要把dll文件和你开发的可执行程序放在同一个目录下,并且当你发布你的应用程序时,你总是需要将dll文件与exe放在同一个目录下。 

5现在,打开你的SDL工程并进入项目属性。

图片

6打开输入菜单下面的连接器,在右边的附加依赖项中, SDL.libSDLmain.lib;后面附加上如下命令:

SDL_image.lib;

图片

如果你想连接SDL_ttf,那么你就加上:SDL_ttf.lib;
如果你想连接SDL_mixer,那么你就加上:SDL_mixer.lib;
等等。

7要使用SDL_image,确保先包含它的头文件:











#include "SDL_image.h" 如果你在安装SDL_ttf,你就这样写:

#include "SDL_ttf.h"

如果你在安装 SDL_mixer,你就这样写:

#include "SDL_mixer.h"

等等。现在扩展库就安装好了。现在你可以使用 SDL_image的函数了。其中,你最想了解的应该是 IMG_Load()函数。 
SDL_Surface *load_image( std::string filename ) {    //加载的图像    SDL_Surface* loadedImage = NULL;     //优化后的图像    SDL_Surface* optimizedImage = NULL;     //使用SDL_image加载图像    loadedImage = IMG_Load( filename.c_str() );     //如果图像加载成功    if( loadedImage != NULL )    {        //创建一个优化后的图像        optimizedImage = SDL_DisplayFormat( loadedImage );         //释放原先加载的图像        SDL_FreeSurface( loadedImage );    }     //返回优化后的图像    return optimizedImage;}

这是上一课中的图像加载函数的修改版。
你可以看到,IMG_Load()函数与SDL_LoadBMP()函数的功能看上去完全相同,但实际上有一个很大的不同点,就是IMG_Load()可以加载BMP, PNM, XPM, LBM, PCX, GIF, JPEG, TGA 和 PNG 格式的文件。 

从这节课开始,PNG将会是主要用到的图像格式。PNG有着极佳的无损压缩特性。

我十分推荐你下载SDL_image的文档并将它放在手边,以方便查阅。

图片

更多资讯请关注兔云编程


图片
















易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!