这几天用过Dev C++后,继续在找找有没有好用的其它集成开发环境,经过使用后发现CodeBlocks的确是不一个不错的选择。免费,开放源代码,支持的编译器多,还支持跨平台开放,真是一个不错的选择。
下载了最新的CodeBlocks 16.01后,又看到了wxWidgets,因为本身就是用它来开放的,当然得试试,这一试的过程中,真是满满的坑,编译wxWidgets不下十次,整个过程中失败的情况也是五花八门。
坑1:每个不同版本的wxWidgets都需要指定的WinGW版本才可以编译,如wxWidgets 3.1.0需要TDM-GCC 4.9 and 5.1版才可以编译,wxWidgets 3.0.2需要TDM-GCC 4.7 and 4.8 才可以编译,一开始没注意到这个问题,用了CodeBlocks中自带的4.9.1去编译wxWidgets 3.0.2,结果自然是中途出错,被坑死了。
坑2:wxWidgets 3.1.0在CodeBlocks的向导中,还没有正式的支持,最高支持到了3.0.x,所以在编译完成wxWidgets 3.1.0后,开始使用CodeBocks向导来生成一个样例程序,结果编译失败,需要在项目的链接选项中修改库文件名为最新的才可以。libwxmsw30ud_core.a中的30需要改为31才可以。
坑3:这才是最坑人的,选择中文界面后,使用向导生成出来的文件然后不完整,而且wsx资源文件不能编辑。
//这是使用中文界面时,生成的代码中的一部分。
//(*AppHeaders
//*)
IMPLEMENT_APP(test332App);
bool test332App::OnInit()
{
//(*AppInitialize
//*)
return wxsOK; <--编译后说这个变量不存在,始终找不到原因。
}
后来一次无意中设置成英文界面后,再次使用向导生成了一个样例,神奇的事儿出现了。wsx资源文件也可以正常显示与编辑了。
//这是英文界面后,向导生成的部分代码,终于知道 wsxOK这个变量是怎么回事了,这汉化的事儿怎么会这么离谱,真无语。
bool test333App::OnInit()
{
//(*AppInitialize
bool wxsOK = true;
wxInitAllImageHandlers();
if ( wxsOK )
{
test333Dialog Dlg(0);
SetTopWindow(&Dlg);
Dlg.ShowModal();
wxsOK = false;
}
//*)
return wxsOK;
}
几个大坑终于踩完了,可以正常编译也程序了。