不过相信碰到这个问题的人一定不少,真不知道ps2dev那帮人是怎样想的,留了iconv.h却不给静态库。那只好自己动手了,小弟研究了一把,总算貌似能用了。;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
前提条件,你要有cygwin或者linux开发环境,并已经能够正确编译过freetype的lib,devkitPro暂时不行,如果是那请往下看:;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
1。下载公版的iconv。http://www.gnu.org/software/libiconv/ ;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
目前好像是1.9.1,解开。以下假设libiconv-1.9.1就是iconv的根目录;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
2。下载svn.ps2dev.org中的freetype;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
3。取出下载下来的freetype中 freetype/builds/unix/config.sub (如果你不想下载这么大的包,也可以用浏览器直接得到config.sub);75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
4。用这个config.sub替换掉iconv里的文件,共有两处,分别在libiconv-1.9.1/autoconf里和libiconv-1.9.1/libcharset/autoconf里;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
5。下载我提供的shell: psplibiconv.sh,放在libiconv-1.9.1下,检查是否有执行权限,执行;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
6。如果没有出现ERROR RUNNING ICONV CONFIGURE,那第一步就完成了;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
7。到libiconv-1.9.1/srclib下打开error.h,第43行;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
将#if defined (__STDC__) && __STDC__;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
改为#if defined VA_START && __STDC__;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
到libiconv-1.9.1/lib下打开loop_wchar.h,第107行;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
将if (bufcount + MB_CUR_MAX > BUF_SIZE);75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
改为if (bufcount /*+ MB_CUR_MAX*/ > BUF_SIZE);75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
8。在libiconv-1.9.1下执行make;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
9。make install;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
好了,应该成功了,写一个程序测试吧,别忘了在你的makefile里LIBS加一条 -liconv;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
看看标题,为什么叫凑合版呢,大家也看出来了,在第七步里我修改了程序,而这一行根据注释/* Continue, append next wchar_t, but avoid buffer overrun. */说明是用来防止溢出的;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
不过如果不取掉MB_CUR_MAX,编译就报错了。gcc我不是高手,只能请高手解决了。;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
自己测试了一把,暂时还没有问题。;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
;75>wS)]A-$Dk#}zyOYT@e*]1w?gf^L\RUX/2CJml<[y>[本文来自:V电G玩S天K空Y
。。。什么时候可以不再凑合呢???


