wxWidgets 的编译和使用

128 篇文章 0 订阅
46 篇文章 0 订阅
wxWidgets是一个开源、跨平台的C++构架库(Framework),它可以提供GUI(图形用户界面)和其它开发工具库,类似MFC的功能。在其下载页面http://www.wxwidgets.org/downloads/能找到当前最新版本的wxWidgets 2.8.9,支持所有版本的Windows,支持Linux(GTK)/Unix(X11) 和MacOS(Motif),并且有Python、Perl、.Net等等多种开发语言接口。下面简单讲一下wxWidgets的使用。以wxWidgets2.8.9版本为例,编译工具为Visual C++ 2008 Express Edition。

1 安装
下载完之后直接安装即可。安装路径默认为C:\wxWidgets,可定制,我安装在C:\Program Files\wxWidgets2.8.9目录下。

2 编译

安装只是将文件复制到程序目录,要使用wxWidgets库,还需编译。进入wxWidgets安装目录,在build\msw目录下找到wx的Visual C++工作空间文件wx.dsw。使用Visual C++ 6.0以上版本编译器需将wx.dsw包含的工程文件转换为对应的高版本工程文件,并将工作空间保存为新的解决方案文件wx.sln。在工作空间的属性管理器中我们可以看到wx默认提供了多种编译方案:Debug/Release、DLL/Lib、Unicode/ANSI和Universal等这些选项的组合。其中Universal选项是将wx编译后不依赖于任何操作系统上的库文件。这是为某些没有图形库的操作系统提供的。这里我只选择Unicode Debug | Win32 和 Unicode Release | Win32 两个方案的动态库(DLL)和静态库(LIB)进行了编译。由于wx工作空间包含多个工程,有些工程还依赖于其他工程,所以在Build动态库版本时,须按固定的顺序来编译,否则会找不到某个链接库而使该工程编译失败。wxWidgets文档(http://wiki.wxwidgets.org/MSVC_.NET_Setup_Guide)提供的编译顺序如下:
wxjpeg
wxpng
wxtiff
wxzlib
wxregex
wxexpat
base
net
odbc
xml
core
gl
html
media
qa
adv
dbgrid
xrc
aui
richtext
但还有中偷懒的方法就是多次编译。具体就是在Build | Batch Build中选中要编译的项目之后,单击 Build。生成过程中可能会有些工程会链接失败从而无法编译,但是没关系,这并不会影响其他工程继续编译。一次完成之后,在选择Batch Build中的Build按钮(注意不是Rebuild)进行编译。这时已经生成库文件的工程会自动略过,而继续那些为编译成功的工程。这样几次重复之后,最终全部编译成功。编译生成的文件在lib\vc_lib和lib\vc_dll。
这里有个小问题提一下。我下载到的wxWidgets2.8.9版本编译时,wx_dbgrid工程总是编译失败,说找不到wxbase28[ud]_odbc.lib。但着文件是存在的,之前已经编译成功了。后来在wx_dbgrid工程的属性管理中发现其Link | Input 的Additional Dependencies中添加了../../wxbase28[ud]_odbc.lib。将其删除后即编译成功了。

3 使用
建立一个新工程,修改工程的属性。主要关注的几个修改地方是:
// <wxDir>是指wxWidgets的安装目录
// 也可以在安装完之后添加一个环境变量,WXWIN,这样就可以用$(WXWIN)代替<wxDir>。
-------------------------------
* General
      o Character Set: Not set | Unicode | Multi-Byte
* C/C++
      o General
           + Additional include directories:
                <wxDir>\include
                <wxDir>\include\msvc
      o Preprocessor
           + Preprocessor definitions:
               WIN32 -- 必须
               WINVER=0x0400 -- 必须(我没添加也可以,也许是为是程序支持Win98的?)
                __WXMSW__ -- 必须
                _WINDOWS -- 必须
                _DEBUG -- debug时需要
                ... // 这里还有其他一些选项可添加,具体可参考 wxWIKI上的的Visual C++使用文档
        o Code Generation
             + Runtime Library: Multi-Threaded DLL -- Release版,Multi-Threaded Debug DLL -- Debug版。 如果出现类似这样的错误:“MSVCRT.lib(MSVCRT.dll) : error LNK2005: _free already defined in LIBC.lib(free.obj)”,则有可能实时库选项有误。
        o Precompiled Headers
            + Create/Use Precompiled Headers: Not Using...

* Linker
        o General
             + Additional Library Directories:
                   <wxDir>\lib\vc_lib (静态链接) 或者 <wxDir>\lib\vc_dll(动态链接)。
        o Input
            + Additional Dependencies:
                 wxmsw28[ud]_core.lib wxbase28[ud].lib - wx核心库。其中u表示Unicode版本,d表示Debug版本。根据需要选择不同文件。如ANSI静态链接选择wxmsw28d_core.lib wxbase28d.lib即可。
                 comctl32.lib rpcrt4.lib winmm.lib advapi32.lib wsock32.lib - wxWidgets所需要的库.
                 wxpng[ud].lib wxzlib[ud].lib wxjpeg[ud].lib wxtiff[ud].lib (release) - wx 支持库(可选。根据自己需要添加不同库)。
        o System
             + SubSystem: Set Windows (/SUBSYSTEM:WINDOWS)                   
----------------------
然后,在需要使用wx的源文件中包含所需的wx头文件即可,或者直接使用wx/wxprec.h。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值