wxWidgets 是一个开源的跨平台 GUI 框架,使用起来和 MFC 有些类似。目前的最新版是 2.8.9。wxWidgets 可以和 Microsoft Visual C++ 2008 Express Edition 很好地结合在一起使用。
第一步:获得源代码
从 wxWidgets 官方网站可以下载得到源代码压缩包,解压以后的文件夹当中有编译时需要的源代码,编译配置等文件。有了这些就可以开始编译源代码了。
第二步:编译之前的设置
假设 wxWidgets 解压后的目录为 %WXPATH%,编译时的一些选项可以在 %WXPATH%\include\wx\msw\setup.h 中进行修改,各项的作用在代码注释中有说明,比如:
引用
#define wxUSE_DEBUG_CONTEXT 1
#define wxUSE_MEMORY_TRACING 1
#define wxUSE_GLOBAL_MEMORY_OPERATORS 1
#define wxUSE_DEBUG_NEW_ALWAYS 1
这样可以打开 wxWidgets 内建的内存泄露检测功能,对各项设置不了解的话就保持默认吧。wxWidgets 在 %WXPATH%\build\msw 下提供了针对各种编译器的配置文件,对应 VC 的配置文件是 config.vc。下面是其中的一些比较重要的选项:
# What type of library to build? [0,1] -- 生成库的类型,0为静态库,1为动态库
SHARED = 0
# Compile Unicode build of wxWidgets? [0,1] -- 是否编译为 UNICODE 版本,0 否,1 是
UNICODE = 0
# Type of compiled binaries [debug,release] -- 是 debug 还是 release
BUILD = debug
MONOLITHIC: 是否只产生一个单一的库文件。
USE_GUI: 是否编译图形界面库
USE_HTML: 是否编译 HTML 库
USE_XRC: 是否编译 XRC 库
USE_OPENGL: 是否编译 OPENGL 库
USE_ODBC: 是否编译 ODBC 库
USE_QA: 是否编译 QA 库
RUNTIME_LIBS: 使用动态还是静态的 C++ 运行库,对应 VC 编译器的 /MD 和 /MT 参数
UNICODE、BUILD 选项可产生四种组合,产生四套不同的库,若再和 SHARE 组合则可产生八套不同的库。 我只编译了两套静态库,由于SHARED = 0,还需要把 RUNTIME_LIBS = static,其他选项保持默认:
(1) UNICODE = 1 BUILD = debug
(2) UNICODE = 1 BUILD = release
对于 config.vc 中的选项也可以通过命令行覆盖掉配置文件中的值,如编译命令用
nmake -f makefile.vc SHARED=1 UNICODE=1 BUILD=release
第三步:使用 VC 编译 wxWidgets
打开 Visual Studio 2008 Command Prompt,进入配置文件所在的目录,执行命令:
nmake -f makefile.vc
在目录 %WXPATH%\lib\ 会产生一个目录:vc_lib 是静态库的目录。如果是编译成动态库则会产生目录 vc_dll。
wxWidgets 会根据 Debug 和 Release 以及 UNICODE 、动态库、静态库等条件编译,组合生成文件和目录名。
编译完后可以把 %WXPATH%\build\msw 删了,想重新编译的话可以保留。
第四步:VC 中使用 wxWidgets
在 VC 里新建一个 Win32 Project, 然后在 Application Settings 选项中,将 Additional options 下面的 Empty project 选中,这样项目建立好之后,VC 不会添加任何源代码文件,需要手动新增相应的 cpp 文件后才能继续下面的设置。
引用
Configuration Properties\C/C++\General\Additional Include Directories:
%WXPATH%\include;%WXPATH%\include\msvc
引用
Configuration Properties\C/C++\Preprocessor\Preprocessor Definitions:
WIN32;NDEBUG;_WINDOWS;__WXMSW__
如果是[Debug]就还要加上__WXDEBUG__,变成:
引用
WIN32;_DEBUG;_WINDOWS;__WXMSW__;__WXDEBUG__
引用
Configuration Properties\C/C++\Code Generation\Runtime Library:
Multi-threaded (/MT)
如果是[Debug]就设置成
引用
Multi-threaded Debug(/MTd)
引用
Configuration Properties\Linker\General\Additional Library Directories:
%WXPATH%\lib\vc_lib
引用
Configuration Properties\Linker\Input\Additional Dependencies:
kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib opengl32.lib
这些静态链接库都是一些可能会使用到的 Windows 系统的库,根据需要增减,比如我从来不用odbc,就不需要在这里添加 odbc32.lib。而 wxWidgets 的静态库会自动添加到工程中,不需要在这里设置,在 %WXPATH%\include\msvc\wx\setup.h 文件中可以看到加载这些库的代码。
编译成依赖 DLL 的执行文件还需要加上预处理指令 WXUSINGDLL
用 UNICODE 编译则需要加上预处理指令 _UNICODE
还有一种 Universal 编译,要加上预处理指令 __WXUNIVERSAL__
这样一个普通的 wxWdigets 项目就设置好了。
分享到:
相关推荐
主要介绍了Visual Studio上构件C++的GUI框架wxWidgets开发环境的方法,wxWidgets是一个跨多个系统平台的图形化界面开发框架,并且可用语言不限于C++,需要的朋友可以参考下
这是一部学习wxWidgets的基础文档,能够让你快速的学习
全书共有20章,第·1·章简要介绍了·wxWidgets·的发展历史和框架结构,第2章介绍了wxWidgets的程序框架及其实现,第3章深入剖析了wxWidgets的事件处理机制,第4~11章详细讲述了wxWidgets的图形用户界面、数据结构...
《使用wxWidgets进行跨平台程序开发》一书中提到的所有的例子源码,参见例子看书,希望各位有用。是原版光盘中的整个example目录。
vc 下的wxwidgets 环境配置教程
使用wxWidgets进行跨平台程序开发。wxWidgets是一个给程序员使用的开发包,这个开发包用来开发用于桌面电脑或者移动设备的GUI(图形用户界面,下同)应用程序。它提供了一个编程框架,作了很多底层的工作以便给应用程序...
中文教程,目录详细,使用wxWidgets进行跨平台程序开发
当前最新的《C++ cross platform programming with wxWidgets》 pdf 另有chm格式的English版本
Drawing and Printing in C++ with wxWidgets
wxWidgets跨平台设计类库用C++写的啊. 还有使用wxWidgets的总体框架文档. 编译并安装的文档 搭建Eclipse+CDT+MinGW+wxWidgets开发环境 <br>
你希望使用C++编写的同一个程序能够运行在 Windows, Linux 或者 Unix上吗? 当每一个平台都有它们自己的framework,外观、行为或者SDK时,这几乎是不可能的。当然你也肯定不想为每一个平台都重写你的程序,这将是极难...
wxWidgets安装+教程wxWidgets安装+教程wxWidgets安装+教程wxWidgets安装+教程wxWidgets安装+教程wxWidgets安装+教程wxWidgets安装+教程wxWidgets安装+教程wxWidgets安装+教程
《使用wxWidgets进行跨平台程序开发》一书中提到的所有的例子源码,参见例子看书,希望各位有用。是原版光盘中的整个example目录。
wxWidgets 框架加下,vs2010编译环境,利用wxctb-0.9实现串口功能。
除了原生的 C++, 还有其他几种语言提供了使用该工具包所需的包装程序。本文将介绍如何使用 wxWidgets 工具包来在所选用的编程语言中创建用途广泛的 GUI。 wxWidgets 工具包提供图形用户界面(GUI)开发所需的一些...
2006年 中文版 包含目录 不包含随书附件 wxWidgets开发入门级
使用WxWidgets进行跨平台程序开发
VC下搭建 wxWidgets 开发环境.docx