wxWidgets的下载、安装和编译

导读:
  1. 去http://www.wxwidgets.org/downloads/下载一个wxMSW版本的wxWidgets。
  2. 运行安装文件。在安装好后设置环境变量WXWIN,指向wxWidgets的安装目录。因为安装过程仅仅是把文件拷贝到指定的目录,所以还需要对wxWidgets进行编译。
  3. 进入$(WXWIN)/build/msw目录,用VS2005打开wx.dsw,提示是否进行项目转换,点确定。如果想要连接静态运行库,在编译前应该对每个项目进行设置。在Project Properties -> C/C++ -> Code Generation中
  将Runtime Library改成Multi-threaded Debug (/MTd) // Debug版本
  将Runtime Library改成Multi-Threaded (/MT) // Release版本
  
  
  
  编译好后的wxWidgets会在$(WXWIN)/lib/vc_lib目录下生成一系列的lib文件,这些lib文件的名字遵循下面的命名规则:不依赖于GUI组件的库会以"wxbase"开头,紧跟着的是版本号,然后的字母表明这个库是否是编译为Unicode('u')或是否是编译为Debug('d'),名字中的最后部分是wxWidgets组件的名字。
  注意:wxWidgets编译完后在$(WXWIN)/build/msw目录下会生成许多预编译头文件,占了很大的空间,如果确定以后不再编译wxWidgets库的话,可以考虑删掉。
  设置VC开发环境
  打开Tools -> Options -> Projects and Solutions -> VC++ Directories
  1. 在Include files中加入$(WXWIN)/include和$(WXWIN)/include/msvc
  2. 在Library files中加入$(WXWIN)/lib/vc_lib
  创建wxWidgets项目
  新建一个General -> Empty Project或Win32 -> Win32 Project项目,然后设置项目的一些属性,可以选择下面的其中一个来设置。譬如你如果打算使用Unicode,那么选择Unicode Debug或Unicode Release,如果你仅仅想调试程序而非发布,则只需要选择Debug设置。
  Debug:
  Project Properties -> General -> Character Set: No Set
  Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded Debug (/MTd)
  Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28d.lib wxmsw28d_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib
  Release:
  Project Properties -> General -> Character Set: No Set
  Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded (/MT)
  Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28.lib wxmsw28_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib
  Unicode Debug:
  Project Properties -> General -> Character Set: Use Unicode Character Set
  Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded Debug (/MTd)
  Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28ud.lib wxmsw28ud_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib
  Unicode Release:
  Project Properties -> General -> Character Set: Use Unicode Character Set
  Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded (/MT)
  Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28u.lib wxmsw28u_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib
  问题
  1. 在编译时出现了Cannot open include file: '../mswu/wx/setup.h': No such file or directory错误
  这是因为项目属性的Character Set设置不正确,必须与使用的wxWidgets库的Character Set一致。
  2. 在编译时出现了MSVCRT.lib(MSVCRT.dll) : error LNK2005: _free already defined in LIBC.lib(free.obj)
  这是因为没有连接正确的wxWidgets库,譬如Unicode Debug版本的项目就需要连接Unicode+Debug版本的wxWidgets库(库名后缀为'ud'的lib文件)。或者是wxWidgets和Application使用的Runtime Library不相同。
  3. 运行是出现No Debugging Information对话框
  将Project Properties -> Linker -> Debugging -> Generate Debug Info的值改成Yes (/DEBUG)。

 

 

 

导读:
  visual studio 2005的可执行文件花了不少时间。
  特将过程记录如下,以防日后忘却,再花冤枉时间。
  
  1. 什么是wxWidgets
  wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. It can be used from languages such as C++, Python, Perl, and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native. This is because wxWidgets uses the platform's own native controls rather than emulating them. It's alsoextensive, free, open-source, and mature.Why not give it a try, like many others have?
  
  2. Visual Studio 2005下wxWidgets的下载、安装与配置
  a) 下载:去http://wxwidgets.org/downloads/下载wxMSW版本的wxWidgets,下载下来的应该是一个exe的安装文件。
  b) 安装:运行下载下来的安装文件,安装在D:/wxWidgets-2.8.0目录中。
  c) 编译Debug版本的库:用Visual Studio 2005打开build/msw/wx.dsw文件,Solution Configurations中选中Unicode Debug,直接Build Solution就可以编译出Debug版本的wxWidgets库了。
  d) 编译Relase版本的库:Release版本的wxWidgets库虽然也可以通过类似的方法去编译,但编译出来的库仍然依赖于visual studio 2005的运行时库。Debug版本的库依赖VS2005也就算了,反正是自己调试用的。Release版本可是要给别人用的,再带上一大堆dll就不好了。为了解决这个问题,我们需要先在Solution Configuration中选中Unicode Release,然后在Solution Explorer中,针对每一个project在项目属性的C/C++ --> Code Generation --> Runtime Library中选Multi-Threaded。(HOHO, 有20个项目要改属性啊~~~)。最后再Build Solution就可以了。
  
  关于不同的Runtime Library的信息,可参见:
  
  e) Visual Studio 2005的配置:
  打开Tools --> Options --> Projects and Solutions --> VC++ Directories
  i. 在Include files中加入D:/wxWidgets-2.8.0/include
  ii. 在Library files中加入D:/wxWidgets-2.8.0/lib/vc_lib
  
  f) 基于wxWidgets的项目的配置:
  打开项目属性
  i. Debug版本的配置:
  C/C++ --> General --> Additional Include Directories中写入:D:/wxWidgets-2.8.0/lib/vc_lib/mswud
  C/C++ --> Code Generation --> Runtime Library选Multi-Threaded Debug DLL
  Linker --> Input --> Additional Dependencies写入:wxmsw28ud_core.lib wxbase28ud.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib 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
  Linker --> Input --> Ignore Specific Library写入:LIBCMTD.lib
  
  ii. Release版本的配置:
  C/C++ --> General --> Additional Include Directories中写入:D:/wxWidgets-2.8.0/lib/vc_lib/mswu
  C/C++ --> Code Generation --> Runtime Library选Multi-threaded
  Linker --> Input --> Additional Dependencies写入:wxmsw28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib 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
  
  wxWidgets的跨平台性,实现i18n的便利性以及功能的完备性让我越来越感兴趣。预计今后几年的GUI开发都将会基于wxWidgets了。
  Farewell, MFC! Don’t cry for me, Microsoft! :)


本文转自
http://dohkoos.name/?p=308

你可能感兴趣的:(技术分析,properties,dependencies,generation,linker,library,character)