wxWidgets 2.8.9出来了
以前用makefile编过wx,这次用IDE编译。
1)下载后安装到默认目录
C:/wxWidgets-2.8.9/
2)使用VC++2005,打开build/msw目录中的wx.dsw,提示转换工程文件格式,选yes to all
3)可以选择Build/batch build...或逐个选择项目编译,由于batch build项目太多了,选择很费功夫,我选择逐个编译,wx2.8.9中一共包含20个lib,按如下顺序逐个编译,我选择编译Unicode Debug和Unicode Release的版本(unicode,debug and release静态库)
wxjpeg
wxpng
wxtiff
wxzlib
wxregex
wxexpat
base
net
odbc
xml
core
gl
html
media
qa
adv
dbgrid
xrc
aui
richtext
(参考资料:http://wiki.wxwidgets.org/MSVC#Building_Single_Configurations)
在编译到wxtiff时,出现错误:syntax error : identifier 'PVOID64'
网上查了下,这是由于头文件搜索顺序引起的。由于我安装了dx8sdk和dx9sdk,dxsdk的头文件搜索顺序在Platformsdk之前。而dxsdk中也有basetsd.h头文件,而该文件无POINTER_64的定义,因此编译通不过。把include目录表中$(VCInstallDir)PlatformSDK/include调到最上面就可以了。
其实不按照这个顺序也能编译出来,只是如果出现问题可以参考一下这个顺序。另外比较玄乎的说法是,即使编译过了,使用时有些莫名其妙的错误和编译顺序相关。为了避免以后出现问题,我按顺序编译了一遍。
4)编好的lib文件在/lib/vc_lib中,一共20X2个lib:
C:/wxWidgets-2.8.9/lib/vc_lib 的目录
2008-10-25 15:58 593,260 wxjpegd.lib
2008-10-25 16:00 249,650 wxjpeg.lib
2008-10-25 16:01 325,074 wxpng.lib
2008-10-25 16:01 518,522 wxpngd.lib
2008-10-25 16:18 565,814 wxtiff.lib
2008-10-25 16:19 1,202,186 wxtiffd.lib
2008-10-25 16:32 195,026 wxzlibd.lib
2008-10-25 16:32 102,740 wxzlib.lib
2008-10-25 16:35 284,204 wxregexud.lib
2008-10-25 16:35 276,884 wxregexu.lib
2008-10-25 16:35 223,390 wxexpat.lib
2008-10-25 16:35 464,492 wxexpatd.lib
2008-10-25 16:36 8,612,502 wxbase28ud.lib
2008-10-25 16:36 5,052,358 wxbase28u.lib
2008-10-25 16:36 642,144 wxbase28u_net.lib
2008-10-25 16:36 1,308,364 wxbase28ud_net.lib
2008-10-25 16:37 306,176 wxbase28ud_odbc.lib
2008-10-25 16:37 15,518 wxbase28u_odbc.lib
2008-10-25 16:37 101,804 wxbase28u_xml.lib
2008-10-25 16:37 442,078 wxbase28ud_xml.lib
2008-10-25 16:37 30,883,342 wxmsw28ud_core.lib
2008-10-25 16:38 19,642,438 wxmsw28u_core.lib
2008-10-25 16:39 14,418 wxmsw28u_gl.lib
2008-10-25 16:40 334,264 wxmsw28ud_gl.lib
2008-10-25 16:40 5,296,418 wxmsw28ud_html.lib
2008-10-25 16:40 3,256,338 wxmsw28u_html.lib
2008-10-25 16:40 525,204 wxmsw28u_media.lib
2008-10-25 16:41 1,201,202 wxmsw28ud_media.lib
2008-10-25 16:42 445,174 wxmsw28u_qa.lib
2008-10-25 16:42 923,282 wxmsw28ud_qa.lib
2008-10-25 16:42 6,775,606 wxmsw28ud_adv.lib
2008-10-25 16:42 4,245,372 wxmsw28u_adv.lib
2008-10-25 16:43 14,430 wxmsw28u_dbgrid.lib
2008-10-25 16:43 334,322 wxmsw28ud_dbgrid.lib
2008-10-25 16:43 7,603,946 wxmsw28ud_xrc.lib
2008-10-25 16:44 4,974,382 wxmsw28u_xrc.lib
2008-10-25 16:44 1,510,758 wxmsw28u_aui.lib
2008-10-25 16:44 2,720,422 wxmsw28ud_aui.lib
2008-10-25 16:44 6,019,480 wxmsw28ud_richtext.lib
2008-10-25 16:45 3,781,466 wxmsw28u_richtext.lib
40 个文件 121,984,450 字节
虽然是unicode,但有些库的名字里并没有u,因为它们没涉及到unicode相关的代码。
5)测试:打开C:/wxWidgets-2.8.9/samples中的samples.dsw,提示convert时选yes to all,将编译配置选成unicode release或unicode debug,选中某个工程build。
我编了一个aui的例子,release版本是1.63M。
不过将浮动工具条拖出来时程序竟然崩溃了,正好用VC debug一下看看。
执行wxAuiManager::OnFloatingPaneMoving()时,得到的pane的frame指针为空,导致执行pane.frame->GetPosition()时程序崩溃。
恰好我以前装了wxPython2.8.8.1的demo,运行一下试试,相同操作没有问题。。
wxPython DEMO中使用的是wx.ToolBar,而这儿使用的是wxAuiToolBar,没有可比性了,是我编出来的库有问题?重新编译了一下aui库,还是如此。继续尝试,发现除了工具条其他的窗口都没问题。看了看demo和wx的代码,感觉应该是这个新加入的类wxAuiToolBar的问题,google了一下,果然有crash bug:http://trac.wxwidgets.org/ticket/10036
看来这个新类还不稳定,等等才能用啊