VS2013VS2015搭建wxWidgets开发环境

    xiaoxiao2021-03-25  112

    转自:  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

    转载请注明原文地址: https://ju.6miu.com/read-40435.html

    最新回复(0)