Windows下编译wxWidgets 2.8.9

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
看来这个新类还不稳定,等等才能用啊

你可能感兴趣的:(windows,Build,include,Crash,makefile,wxPython)