[转载] 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

相关文章

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa