SDL开发常见问题拾遗[WIN32]

最近接触了SDL,一个开源游戏开发库,感觉使用起来真的是很方便,在个人安装使用中遇到一些问题,再此做个存档.

1.在控制台编译SDL程序请无比加上SDLmain.lib进行链接,

2.出现错误"error LNK2019: unresolved external symbol _SDL_main referenced in function _main",是你的main函数参数不符合SDL的定义标准所致.SDL控制台程序严格要求main函数的参数格式.必须为:int main(int argc, char *argv[]).

3.出现错误error C4716: 'SDL_main' : must return a value,main函数必须返回一个值

4.灵异现象之使用SDL_Image库无法载入jepg图片,而其他格式的图片正常.
出现这个问题是因为你安装了JDK或者其他的程序中包含了jpeg.dll,而且这个文件在系统的Path路径中.解决办法有几个.一是将SDL自带的dll都复制倒system32目录下,这个目录的文件优先,自然可以.而是将你的SDL开发包的dll路径在Path环境变量的未知至于JDK或者其他包含jepg.dll的路径之前

5.关于使用SDL_TTF库显示中文的问题.看到别人说的在SDL中不好显示中文,其实不然.SDL_TTF使用freetype显示文字,所以它能显示UTF-8或者Unicode编码的文字.而在window中.使用标准库自带的L宏就可以达到这个要求,但是这有一个问题,如果仅使用L,使用TTF_RenderUNICODE渲染是会报错的,因为在这个函数中,字符串的类型是unsigned __int16*,而L转换后是wchar_t *型的,于是要进行手动转换.如:(unsigned __int16*)L"xxx",当然为了方便起见,我建议定义一个转换宏:
#define _U(s) (unsigned __int16*)##L##s
以便于使用_U("xxx")来转换Unicode
至于从文件或者其他地方获取的中文显示问题,也有解决办法
    1.如果能将其他文字转换成Unicode自然方便,比如如果文字来自文件,则将文件保存为Unicode编码格式
    2.如果无法修改,则使用Iconv库来进行编码转换.Iconv可将方便的进行Utf8,GBK,Unicode之间的转换.至于如何转换,等下在进行总结.

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: C  C++  SDL  游戏 
评论: 0 | 引用: 0 | 查看次数: 611
发表评论
用户名:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 500 字 | HTML代码允许 关闭 | 评论可修改 关闭