宫指导说,换帅如换刀

程序员的编译器一换,基本套路必须都重练几次

使用wxWidgets并不难,但不能使用现有的库和工程配置文件,细节就必须理清楚

获取wxWidgets

官方的下载页面,下7z或zip文件均可

文件“wxWidgets根目录/docs/msw/install.txt”是编译说明文档,可以作为参考

添加环境变量WXWIN,值是wxWidgets根目录的路径。虽然不添加变量也可以编译,但很多wxWidgets插件的编译都依赖这个环境变量,因此最好加上。

wxWidgets根目录的路径不要含有空格

增加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

编译库文件

运行“开始|所有程序|visual studio 2015|visual studio tools|VS2015 开发人员命令提示”

切换到%WXWIN%\build\msw

32位静态库DEBUG版

nmake /f makefile.vc

库文件生成在%WXWIN%\lib\vc_lib,文件名含d表示debug版

32位静态库RELEASE版

nmake /f makefile.vc BUILD=release

库文件生成在%WXWIN%\lib\vc_lib,文件名不含d与debug版区分

32位动态库DEBUG版

nmake /f makefile.vc SHARED=1

库文件生成在%WXWIN%\lib\vc_dll,文件名含d表示debug版

32位动态库RELEASE版

nmake /f makefile.vc BUILD=release SHARED=1

库文件生成在%WXWIN%\lib\vc_dll,文件名不含d与debug版区分

运行“开始|所有程序|visual studio 2015|visual studio tools|Windows Desktop Command Prompts|VS2015 x64 本机工具命令提示符”

切换到%WXWIN%\build\msw

64位静态库DEBUG版

nmake /f makefile.vc TARGET_CPU=X64

库文件生成在%WXWIN%\lib\vc_x64_lib,文件名含d表示debug版

64位静态库RELEASE版

nmake /f makefile.vc BUILD=release TARGET_CPU=X64

库文件生成在%WXWIN%\lib\vc_x64_lib,文件名不含d与debug版区分

64位动态库DEBUG版

nmake /f makefile.vc SHARED=1 TARGET_CPU=X64

库文件生成在%WXWIN%\lib\vc_x64_dll,文件名含d表示debug版

64位动态库RELEASE版

nmake /f makefile.vc BUILD=release SHARED=1 TARGET_CPU=X64

库文件生成在%WXWIN%\lib\vc_x64_dll,文件名不含d与debug版区分

“Hello world”之

官方源码

// 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));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!");
}

静态库DEBUG方案的编译

“工程属性|C/C++|常规|附加包含目录”,添加

%WXWIN%\include

“工程属性|链接器|常规|附加库目录”,添加

%WXWIN%\lib\vc_lib

“工程属性|链接器|输入|附加依赖项”,添加

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

推荐用这种方式添加依赖项,而不写#pragmma comment,方便切换不同方案,代码也美观

最后5个依赖项并不属于wxWidgets,别漏了

编译运行,成功~

静态库RELEASE方案的编译

附加库目录的路径不同,要修改

依赖库的名字不同,把d去掉

动态库方案的编译

“工程属性|C/C++|预处理器|预处理器定义”,添加

WXUSINGDLL

转载于:https://www.cnblogs.com/sqxy110/p/4897494.html

Visual Studio 2015编译wxWidgets相关推荐

  1. 用Visual Studio 2015 编译张帆的第一个WDM驱动,并且成功安装到Windows 10里面

    用Visual Studio 2015 编译张帆的第一个WDM驱动,并且成功安装到Windows 10里面!!! 开发工具:Visual Studio 2015 企业版 目 标 机:Windows 1 ...

  2. 使用 Visual Studio 2015 编译 BitShares-Core

    0. 环境准备 * 64 位 Windows 系统,比如 Windows Server 2012 R2 Standard edition 1. 安装 Visual Studio 2015 with U ...

  3. Visual Studio 2015 编译与使用Boost库进行文件与目录的操作

    前言 1.Boost库是一个功能非常强大的跨平台开源C++库,我这里只演示如何在win7下visual studio 2015里做boost库的boost::filesystem来操作文件.目录. 2 ...

  4. visual c语言编译运行结果,Visual Studio 2015编译运行C语言文件问题小结

    各位老友很久不见,距离上一篇博客已通过去四个多月了,这应该是近几年间隔最长的一次.很无奈,毕业季遇上了特殊时期,不少计划都被打乱了,半年前构思的各类场景在现实面前一一被抹杀,在家搞毕业设计是真的痛苦, ...

  5. Visual Studio 2015编译运行C语言文件问题小结

    各位老友好久不见,距离上一篇博客已经过去四个多月了,这应该是近几年间隔最长的一次.很无奈,毕业季赶上了特殊时期,很多计划都被打乱了,半年前构思的各种场景在现实面前一一被抹杀,在家搞毕业设计是真的痛苦, ...

  6. Visual Studio 2015编译Lua 5.3.4遇到的坑

    被坑的不浅,遇到错误:" LNK1561:必须定义入口点",解决方案删除再建,步骤一遍一遍操作,还是报错.如下图所示: 首先,它必须要改成DLL或者LIB(动态/静态库),如果是应 ...

  7. vs远程编译linux程序,使用Visual Studio 2015远程调试Linux程序

    ##安装 Visual Studio 2015 安装时注意将跨平台移动开发->Visual C++移动开发->Viaual C++ Android 开发的选项勾上 ##安装PUTTY Vi ...

  8. 在Visual Studio 2015下使用pthread win32编译报错

    pthread for win32的发行版本中只提供了动态库,今天在Visual Studio 2015下编译pthread for win32(2.9.1),想编译一个静态库,就报一个struct ...

  9. 【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发

    原文:Visual Studio 2015 for Linux更好地支持Linux下的开发 英文原文:Targeting Linux Made Easier in Visual Studio 2015 ...

最新文章

  1. 5,ORM组件XCode(动手)
  2. “最粉嫩”的JVM垃圾回收器及算法,王者笔记!
  3. Enthought Canopy中第三方软件包的安装(package manager中不含的包)
  4. Blazor——Asp.net core的新前端框架
  5. Airflow 中文文档:数据分析
  6. 酒局中同事说“不把这杯酒喝了就是不给我面子”,我该怎么办?
  7. Tensorflow学习笔记1----基础分类模型
  8. Oracle 警告:Weblogic 服务器中含有多个可遭远程利用的严重漏洞
  9. 1句Log引发的悲剧
  10. 现实世界的Windows Azure: 采访LexisNexis的Marc Slovak 和 Manish Bhargava
  11. 菜鸟教程(Java)笔记——Java教程
  12. 产品经理应该懂得的一点技术
  13. 小米8手机android版本下载地址,小米手机8 MIUI 10稳定版完整包发布(附下载链接)...
  14. xen html插件天气不会刷新,天气通刷新不了怎么办 刷新不了解决方法
  15. 移动端webUI框架(HTML5手机框架)
  16. opencapwap简要分析
  17. EV 鼠标被消费者誉为世界“第八大奇迹”内幕
  18. mybatis mysql连接时区_MySQL时区的查看和设置
  19. mysql练习题及答案_mysql练习题及答案.doc
  20. 东方梦符祭 N1无尽30波终于通了

热门文章

  1. 如何优雅的处理异常(java)
  2. 每天一个linux命令(5):in命令
  3. 【Android】3.24 示例24--OpenGL绘制功能
  4. vs生成命令和属性的宏
  5. Web.Config的学习
  6. 简单高效:用Swatch做Linux日志分析
  7. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第5天
  8. Java虚拟机学习 - 体系结构 内存模型
  9. Android-- SharedPreferences数据存储XML文件的方法
  10. 单元测试时使用Ninject的小问题