最近在做CodeBlocks+wxWidgets+MinGW的开发,编译时提示wcout出错,在网上搜索了一个,发现这是MinGW的一个limitation:不支持unicode。网上提供的解决办法是用STLPort替代MinGW的STL库。按照网上提供的步骤,从SourceForge下载源代码,编译,出错。经过分析,发现网上很多文章都缺少了一些重要的步骤:安装MSYS。下面是我的编译过程:
1. 下载STLPort源代码:http://sourceforge.net/projects/stlport/。假定解压目录为C:/STLPort
2. 下载并安装CodeBlocks和MinGW或带MinGW的CodeBlocks,假定MinGW安装路径为C:/CodeBlocks/MinGW。不要忘记把C:/CodeBlocks/MinGW/bin加到Path环境变量里
3. 下载并安装MSYS:http://www.mingw.org/wiki/msys 并设置MinGW的安装路径(这篇文章讲得很清楚)
4. 打开MSYS Shell环境,cd到/c/STLPort/build/lib(在MSYS里,Windows的C:一般映射到/c),执行mingw32-make -fgcc.mak clean all install
5. mkdir C:/STLPort/lib
6. 复制C:/STLport/build/lib/obj/gcc下面3个文件夹里的*.a和*.all到C:/STLPort/lib。同时把3个dll复制到C:/Windows/system32
7. 下面是配置CodeBlocks的步骤:
(1)打开CodeBlocks菜单Settings->Compiler and Debugger->Global Compiler Setting->GCC
(2)检查并更新Toolchain executables中的MinGW安装路径(如果你用的不是CodeBlocks自带的MinGW)
(3)在Compiler setting->Other options中添加-mthreads
(4)在Linker setting中把C:/STLPort/lib里的3个*.a文件加入link libraries里,注意去年文件名前面的“lib”和后面的“.a”
(5)在Search directories->Compiler里加入C:/STLPort/stlport
(6)在Search directories->Linker里加入C:/STLPort/lib
好了,一切准备就绪,写一个wxWidgets程序或wcout程序试试看吧!