[SDL]SDL的扩展库

Posted on 2010年8月20日 04:20

    SDL库提供的部分API相对比较底层,而有时候我们又需要使用更方面的库函数。好在一些基于SDL的扩展库能满足我们的需求。在这个页面http://www.libsdl.org/projects/列出了SDL的扩展库和一些使用SDL开发的示例。从页面上所示的更新日期和项目名称可以分辨出其中仍然活跃的SDL,有:

    用于声音支持的SDL_mixer;

    用于载入不同格式图片的SDL_image;

    用于网络通信的SDL_net;

    用于加载ttf字体的SDL_ttf;

    用于显示rtf文档的SDl_rtf。

    这些库都依赖于SDL库,使用方式都很简单:解压下载下来的devel包,将其中的头文件、dll文件、lib文件复制到相应目录下即可。这几个库提供的win32平台上的devel包都是为VC提供的,但其实Mingw可以直接使用.lib文件进行连接。(对于动态链接库,Mingw还可以不使用导出库,直接利用dll文件进行链接)。

 

[SDL][CodeBlocks]配置Code::Blocks开发SDL程序

Posted on 2010年8月17日 23:23

    首先,在SDL的官网(www.libsdl.org/)下载SDL库的Mingw版本。

    解压之后,得到一堆文件,但有用的主要是:/bin下的dll文件,/lib下的所有文件,/include下的SDL文件夹。/bin下的dll文件用于动态链接,将其复制到C:\windows\system32下;/include下的SDL文件夹复制到Code::Blocks自带的Mingw下的include文件夹下;/lib下的所有文件复制到Mingw下的lib文件夹中。

    /lib下的三个文件分别是:libSDL.dll.a,用于动态链接;libSDLmain.a,用于静态链接;libSDL.la,用于静态链接。虽然已经将这三个文件复制到Mingw的目录下,但默认情况下并不会链接这几个库。所以稍后我们需要手工添加这几个库。

    在Code::Blocks中建立一个控制台项目。此时可以包含SDL库的头文件并进行编译,但是会遇到编译问题:提示SDL_main的原型不匹配。造成这个问题的原因是SDL_main.h中有如下一句:

#define main	SDL_main

虽然我们不知道这一句的动机是什么,但毫无疑问注释掉是个好主意。然后就可以顺利通过编译,但还是无法通过链接,原因如上。解决方法:Project->Build Options->Linker settings,点击Add添加库,如果是静态链接添加libSDLmain.a,动态链接添加libSDL.dll.a。注意此时进行的是Debug版的配置,Release版还需单独配置。

    经过上述步骤,就可以使用Code::Blocks开发SDL程序了。

[Qt]Qt中文乱码问题

Posted on 2010年8月11日 05:45

    在windows下编写Qt程序可能会遇到中文乱码问题。原因在于Qt内部使用Unicode编码,而windows的系统默认编码是GB18030/GBK/GB2312系列的。因此解决方法就是让Qt库进行正确的编码转换。

    在main中使用如下代码:

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));

“utf8”要跟文件编码一直。如果源文件采用GB2312编码,那么这里的utf8就应该改成GB2312。加入如上代码后就可以在源文件中直接使用中文了。

    如果使用了Qt的翻译机制,那么还应加入如下代码:

QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));

PS:默认情况下Qt Creator使用系统编码,最好修改为utf8。

    更改方式:Tools->Options->Environment->Default file encoding 为 UTF8,然后新建的项目就会全部改为UTF8编码。