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

相关文章

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee