[转载] 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#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a