VS2013/VS2015搭建wxWidgets开发环境

转自:  http://blog.csdn.net/shalyf/article/details/16826857


一、安装

前往官网下载最新wxWidgets 3.0.0。

https://sourceforge.net/projects/wxwindows/files/3.0.0/wxMSW-3.0.0-Setup.exe/download

下载完默认安装即可,可修改安装路径。

二、编译

打开安装目录wxWidgets-3.0.0在build\msw下找到wx.dsw。

用VS2013打开wx.dsw,等待工程从VC6到VS2013的转换完成。

解决方案结构如下图所示。


右击解决方案,点击批生成,勾选所有Debug和Release(可根据需要选择),点击生成进行编译。


此时,wxWidgets-3.0.0\lib\vc_lib目录如下所示,已生成所需库文件,其中u表示Release版本,ud表示Debug版本。


三、配置

新建Win32项目。

新建源文件test.cc,粘贴以下代码。

// wxWidgets "Hello world" Program  
// For compilers that support precompilation, includes "wx/wx.h".  
#include <wx/wxprec.h>  
#ifndef WX_PRECOMP  
#include <wx/wx.h>  
#endif  
class MyApp : public wxApp  
{  
public:  
    virtual bool OnInit();  
};  
class MyFrame : public wxFrame  
{  
public:  
    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);  
private:  
    void OnHello(wxCommandEvent& event);  
    void OnExit(wxCommandEvent& event);  
    void OnAbout(wxCommandEvent& event);  
    wxDECLARE_EVENT_TABLE();  
};  
enum  
{  
    ID_Hello = 1  
};  
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)  
EVT_MENU(ID_Hello, MyFrame::OnHello)  
EVT_MENU(wxID_EXIT, MyFrame::OnExit)  
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)  
wxEND_EVENT_TABLE()  
wxIMPLEMENT_APP(MyApp);  
bool MyApp::OnInit()  
{  
    //MyFrame *frame = new MyFrame("Hello World", wxPoint(50, 50), wxSize(450, 340));  
    MyFrame *frame = new MyFrame("Hello World", wxDefaultPosition, wxDefaultSize);  
    frame->Show(true);  
    return true;  
}  
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)  
: wxFrame(NULL, wxID_ANY, title, pos, size)  
{  
    wxMenu *menuFile = new wxMenu;  
    menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",  
        "Help string shown in status bar for this menu item");  
    menuFile->AppendSeparator();  
    menuFile->Append(wxID_EXIT);  
    wxMenu *menuHelp = new wxMenu;  
    menuHelp->Append(wxID_ABOUT);  
    wxMenuBar *menuBar = new wxMenuBar;  
    menuBar->Append(menuFile, "&File");  
    menuBar->Append(menuHelp, "&Help");  
    SetMenuBar(menuBar);  
    CreateStatusBar();  
    SetStatusText("Welcome to wxWidgets!");  
}  
void MyFrame::OnExit(wxCommandEvent& event)  
{  
    Close(true);  
}  
void MyFrame::OnAbout(wxCommandEvent& event)  
{  
    wxMessageBox("This is a wxWidgets' Hello world sample",  
        "About Hello World", wxOK | wxICON_INFORMATION);  
}  
void MyFrame::OnHello(wxCommandEvent& event)  
{  
    wxLogMessage("Hello world from wxWidgets!");  
}  

1、 包含目录

右击项目,打开项目属性页,配置一项选择所有配置

配置属性->C/C++->常规->附加包含目录 中添加:

A、 配置一项改为Release
C:\wxWidgets-3.0.0\include  
C:\wxWidgets-3.0.0\lib\vc_lib\mswu 

B、 配置一项改为Debug 
C:\wxWidgets-3.0.0\include  
C:\wxWidgets-3.0.0\lib\vc_lib\mswud 

2、 库目录

配置属性->链接器->常规->附加库目录 中添加:

C:\wxWidgets-3.0.0\lib\vc_lib 


3、 MFC的使用

配置属性->常规->MFC的使用:使用标准 Windows 库

4、 依赖项

配置属性->链接器->输入->附加依赖项 按照如下规则添加:

A、 配置一项改为Release

wxbase30u.lib  
wxbase30u_net.lib  
wxbase30u_xml.lib  
wxexpat.lib  
wxjpeg.lib  
wxmsw30u_adv.lib  
wxmsw30u_aui.lib  
wxmsw30u_core.lib  
wxmsw30u_gl.lib  
wxmsw30u_html.lib  
wxmsw30u_media.lib  
wxmsw30u_propgrid.lib  
wxmsw30u_qa.lib  
wxmsw30u_ribbon.lib  
wxmsw30u_richtext.lib  
wxmsw30u_stc.lib  
wxmsw30u_xrc.lib  
wxpng.lib  
wxregexu.lib  
wxscintilla.lib  
wxtiff.lib  
wxzlib.lib  
comctl32.lib  
rpcrt4.lib  
B、 配置一项改为Debug 


wxbase30ud_net.lib  
wxmsw30ud_html.lib  
wxbase30ud_xml.lib  
wxmsw30ud_adv.lib  
wxmsw30ud_aui.lib  
wxmsw30ud_gl.lib  
wxmsw30ud_media.lib  
wxmsw30ud_propgrid.lib  
wxmsw30ud_qa.lib  
wxmsw30ud_ribbon.lib  
wxmsw30ud_richtext.lib  
wxmsw30ud_stc.lib  
wxmsw30ud_xrc.lib  
wxscintillad.lib  
wxmsw30ud_core.lib  
wxbase30ud.lib  
wxtiffd.lib  
wxjpegd.lib  
wxpngd.lib  
wxzlibd.lib  
wxexpatd.lib  
winmm.lib  
comctl32.lib  
rpcrt4.lib  
wsock32.lib  
odbc32.lib  

5、 预处理器定义

配置一项改为Debug

配置属性->C/C++->预处理器->预处理器定义 中添加:

__WXMSW__  
__WXDEBUG__  
6、 保存后即可编译


增加vs2015支持

vs2015影响编译的改动,主要是定义了snprintf,以及编译器版本升级到14。

需要对wxWidgets作如下修改,才能使用vs2015进行编译。

 

%WXWIN%\include\msvc\wx\setup.h,66行,增加版本支持

    #elif _MSC_VER == 1900
        #define wxCOMPILER_PREFIX vc140

 

%WXWIN%\include\wx\compiler.h,56行,增加版本支持

#elif __VISUALC__ < 2000
    #define __VISUALC14__

 

在下面三个文件中,找到snprintf的宏定义,注释掉

  •   %WXWIN%\src\tiff\libtiff\tif_config.h
  •   %WXWIN%\src\tiff\libtiff\tif_config.vc.h
  •   %WXWIN%\src\zlib\gzguts.h



===补充:使用预编译二进制文件搭建环境,上面的可以不看了===


1.将 wxWidgets-3.0.3-headers.7z 和 wxMSW-3.0.3_vc140_x64_Dev.7z 解压到 C:\wxWidgets-3.0.3

2.设置环境变量 WXWIDGETS_ROOT   C:\wxWidgets-3.0.3

3.Path 中添加 C:\wxWidgets-3.0.3\lib\vc140_x64_dll

4.Debug x64配置添加包含目录:
Configuration -> c/c++ -> General -> Additional Include Directories:
添加: $(WXWIDGETS_ROOT)\include;$(WXWIDGETS_ROOT)\lib\vc140_x64_dll\mswu;

5.Debug x64配置添加库目录:
Configuration -> Linker -> General -> Additional Library Directories:
添加: $(WXWIDGETS_ROOT)\lib\vc140_x64_dll;

6.Debug x64配置添加引用库:
Configuration -> Linker -> Input -> Additional Dependencies:

添加: 

wxbase30ud_net.lib    
wxmsw30ud_html.lib    
wxbase30ud_xml.lib    
wxmsw30ud_adv.lib    
wxmsw30ud_aui.lib    
wxmsw30ud_gl.lib    
wxmsw30ud_media.lib    
wxmsw30ud_propgrid.lib    
wxmsw30ud_qa.lib    
wxmsw30ud_ribbon.lib    
wxmsw30ud_richtext.lib    
wxmsw30ud_stc.lib    
wxmsw30ud_xrc.lib    
wxscintillad.lib    
wxmsw30ud_core.lib    
wxbase30ud.lib    
wxtiffd.lib    
wxjpegd.lib    
wxpngd.lib    
wxzlibd.lib    
wxexpatd.lib    
winmm.lib    
comctl32.lib    
rpcrt4.lib    
wsock32.lib    
odbc32.lib 
7.Debug x64配置添加预处理宏:
Configuration -> c/c++ -> Preprocessor -> Preprocessor Definitions:
添加: __WXMSW__    
  __WXDEBUG__  
  WXUSINGDLL



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值