[转载] wxWidgets-2.6.2 + Microsoft Visual C++ 2005 Express + Platform SDK 安装使用手记

本文主要是介绍[转载] wxWidgets-2.6.2 + Microsoft Visual C++ 2005 Express + Platform SDK 安装使用手记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[转载] wxWidgets-2.6.2 + Microsoft Visual C++ 2005 Express + Platform SDK 安装使用手记

本文原始地址:
http://spaces.msn.com/members/layesuen/Blog/cns!1plK5TnXHOmd1OwuUNSIGZfQ!443.entry

wxWidgets 的确是不错的东西啊,这几天看了它的 document
和一些教材,越看越激动哦。

wxWidgets 虽然支持大多流行编译器,但若是开发侧重
Windows 平台的应用程序,笔者以为,还是使用 VC
比较合适。为什么呢?大家知道,VC
编译器是很快的(不过有些人觉得 BC
要更快一点),且生成的可执行文件较小。另外,一个最最最重要的优点就是
VC
的调试器实在太好了。易用、稳定,简直无人能及。还有,VC
的 IDE 也是相当不错,尤其是
IntelliSense,也是属于无人能及的那种,而且界面比较漂亮
:P 所以,我选择用 VC 配合 wxWidgets 工作。

最强的反对 VC 意见可能会来自 gcc/gdb
的忠实拥护者们,gcc/gdb 的确堪称是 C++
编译器/调试器的标准。但是,Windows
下的移植版似乎还不怎么另人满意,至少目前还很不满意。首先是慢,MinGW
慢,Cygwin 更慢(且后者还拖着个硕大的
dll)。像我这种比较性急的人总在写完一小段代码后就迫不及待的编译看看,要是以
MinGW 或Cygwin
那种速度恐怕不可能了吧。其次毕竟是移植过来的东西,比起土生土长的
VC 毕竟还是问题多多。还有 IDE,没找到几个支持 MinGW
/ Cgywin 的像样的 IDE,好一点的可能要算 DevC++
了吧,还有整合了 wxWidgets 和窗体编辑器的
wxDevC++,SourceForge 都有下载。但还是不能和 VC 的 IDE
相比。最后,有人要说 gcc 是 everything and
everywhere,担心 VC
程序的移植性。其实那是完全不用考虑的问题,VC8
对标准 C++ 的支持已近相当不错,只其实要用标准 C++
写程序,在 VC 下可以编译,在 UNIX/GNU Linux 环境下的
gcc 一样可以编译。如果你真正喜欢 gcc
的话,也可以在开发阶段使用
VC,而在生成最终产品时使用 gcc :D

说了这么多,下面是正题,我如何安装和使用
wxWidgets。

先是安装 Microsoft Visual C++ 2005 Express 和 Platform
SDK。可从微软网站上下载,都是免费的(其中前者有一年的使用期限)。Visual
C++ 的安装没什么说的,Platform
若完全安装比较庞大,如果你想节省点空间不妨只选择下面两项进行安装:

(1) Microsoft Windows Core SDK/Build Environment/Build Environment (x86
32-bit)

(2) Microsoft Data Access Services (MDAC)/BuildEnvironment/Build
Environment (x86 32-bit)

选择第二项的目的是因为这一项中包含
odbc32.lib,如果你不需要则可以不选,但本文的后面部分,特别是编译
wxWidgets
时,都是按照选择了这一项来进行的(USE_ODBC=1)。另外,如果你的系统结构是
AMD64 或 IA64 则应该选择相应的 Build Environment。

下面开始安装 wxWidgets,在 SourceForge.net 下载了
wxWidgets-2.6.2 的 zip
包。解压到某一目录(后文中此目录用 %WXPATH%
代替)。

首先,编译 wxWidgets。在 Visual Studio 命令行环境下进入
%WXPATH%/build/msw 目录。这里面有一系列由 Bakefile 生成的
makefile,根据其对应的编译器不同有着不同的后缀,并且每种编译器也对应着一个
config 文件。因为我们用的是 VC,所以我们关注的是
makefile.vc 和 config.vc。

用文本编辑器打开 config.vc 文件。这是关于如何编译
wxWidgets 的设置。这里解释一些重要的选项。

SHARE: 编译产生的 wxWidgets 库是静态库还是动态库
UNICODE: 是否支持 unicode utf-8
BUILD: 编译产生的库是用于调试的还是最终发行的

UNICODE、BUILD
选项可产生四种组合,产生四套不同的库,若再和
SHARE 组合则可产生八套不同的库。

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
两个选项产生的四种组合:
(1) UNICODE = 0 BUILD = debug
(2) UNICODE = 0 BUILD = release
(3) UNICODE = 1 BUILD = debug
(4) UNICODE = 1 BUILD = release

除了 UNICODE 和 BUILD 选项之外,其它选项如下:

SHARE = 0
MONOLITHIC = 0
USE_GUI = 1
USE_HTML = 1
USE_XRC = 1
USE_OPENGL = 1
USE_ODBC = 1
USE_QA = 1
RUNTIME_LIBS = static

按照上面修改了 config.vc 后,分别四次执行

nmake -f makefile.vc (稍等一下,要运行好一会儿的)

每次执行之前,将 UNICODE 和 BUILD
改为前文中四种组合的其中一种。

编译产生的临时文件分别在 msw mswd mswu mswud
四个子目录中,这些是为了在调整设置后重新编译时节约时间的,若不想重新编译可以把它们删掉。而最终产生的
lib 文件已经被拷贝到了 %WXPATH%/lib/vc_lib
下。其中每套库还有一个配置文件,分别在
%WXPATH%/lib/vc_lib 下的 msw mswd mswu mswud
四个目录中,这些配置文件里包含许多可以调整的预编译选项,具体可以参考相关文档。

到此为止,wxWidgets
库已经编译好了。那么怎样设置一个使用 wxWidgets 的
Visual Studio 工程呢。启动 Visual C++ 2005 Express,打开
Tools/Option 菜单。这里是 IDE 的一些全局选项。看看
Projects and Solutions/VC++ Directories 里面是否包括 Platform SDK
的 include 和 lib
目录,如果没有的话加上。然后新建一个工程,在工程设置里面修改编译器和连接器的设置如下(注意把
%WXPATH% 换成真实的 wxWidgets 解压目录):

[Debug]

Configuration Properties/C/C++/General/Additional Include Directories:
%WXPATH%/include;%WXPATH%/include/msvc

Configuration Properties/C/C++/Preprocessor/Preprocessor Definitions:
WIN32;__WXMSW__;_WINDOWS;_DEBUG;__WXDEBUG__

Configuration Properties/C/C++/Code Generation/Runtime Library:
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
(wxWidgets 的库好像会在预编译里自动被加上)

Configuration Properties/Linker/Debugging/Generate Debug Info:
Yes(/DEBUG)

[Release]

Configuration Properties/C/C++/General/Additional Include Directories:
%WXPATH%/include;%WXPATH%/include/msvc

Configuration Properties/C/C++/Preprocessor/Preprocessor Definitions:
WIN32;__WXMSW__;_WINDOWS

Configuration Properties/C/C++/Code Generation/Runtime Library:
Multi-threaded Debug(/MT)

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

这样,你的工程里应该可以正常编译使用了 wxWidgets
的程序了。

如果你想工程里使用 XP
主题外观的话,需要在自己建立一个 .rc
文件,并在其中引用 %WXPATH%/include/wx/msw/wx.rc
文件。如果这样做不行的话可以在 Configuration
Properties/Linker/Manifest File/Additional Manifest Dependencies
里手动加上 %WXPATH%/include/wx/msw/wx.manifest,或者在
Additional Include Directories 里加入 %WXPATH%/include/wx/msw
(因为 wx.rc 里对 wx.manifest 的引用好像没有加路径)。

基本上就是这么多了,这篇文章主要写给初用 wxWidgets
的人看,免得绕弯路。如果有什么问题可以和我联系。也可以上
http://www.solidsteel.nl/users/wxwidgets/ 提问。

这篇关于[转载] wxWidgets-2.6.2 + Microsoft Visual C++ 2005 Express + Platform SDK 安装使用手记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607922

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c