wxWidgets的配置过程及出错处理

来源:互联网 发布:倾斜摄影测量软件 编辑:程序博客网 时间:2024/05/22 09:51

 

1. 去http://www.wxwidgets.org/downloads/下载一个wxMSW版本的wxWidgets。

2. 运行安装文件。在安装好后设置环境变量WXWIN,指向wxWidgets的安装目录。因为安装过程仅仅是把文件拷贝到指定的目录,所以还需要对wxWidgets进行编译 (环境变量在“系统属性->高级->环境变量”中设置)。注意:环境变量"WXWIN"应该设置为"c:/???"而不是"c:/???/",然后包含目录的时候格式为"$(WXWIN)/include/"而不是"$(WXWIN)include/"。

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)。

      4.编译出现error LNK2005:并且有很多个的时候,这是因为Project Properties -> C/C++ -> Code Generation -> Runtime Library: 的配置与wxWidgets的库生成的选择不一样,我是都用/MDd生成。

      5.编译出现wxXXX error LNK2019: 无法解析的外部符号 _main ,该符号在函数 _mainCRTStartup 中被引用。这是因为我自己编写时的巨大失误,使用了wxMSW但是却创建了控制台程序。Properties -> Linker -> System –>SubSystem:设置一定要是Windows(/SUBSYSTEM:WINDOWS)。

原创粉丝点击