1,下载wxwidgets包,
可以下载已经编译好的版本,但是我在github上提供的链接里面找不到已经编译好的版本,只能使用这种方法自己编译了,即,使用源代码版,自己编译,这里讲的是自己编译方法
2,解压
将下载好的源代码压缩文件解压到任意位置,路径下不要有空格或者中文字符,免得出错,特别是不要将其解压到 “C:\Program Files” ,免得makefile或者使用命令行时出错。
3,编译:vs C++ 编译器,从命令行处编译
打开命令行工具Visual Studio Command Prompt,在开始菜单处有
将路径更改到 %WXWIN%\build\msw
(为你解压的路径,如我的为D:\C++GUI-wxWidgets3.0.3\build\msw)
编译默认的debug版本,在命令行中输入
> nmake /f makefile.vc
编译默认的release版本,在命令行中输入
> nmake /f makefile.vc BUILD=release
编译默认的release DLL 版本,在命令行中输入
> nmake /f makefile.vc BUILD=release SHARED=1
为了验证是否编译成功,将当前目录切换到 samples\minimal 并且运行于上面一样的命令行,在这个目录下,会有一个 working minimal wxWidgets sample
如果想要rebuild, 输入如下命令即可
"clean" target first 或者 "nmake /a".
更多编译参数,请参考如下文件
%%%%%\docs\msw\install.txt //windows的安装方法
在此文件的 Makefile parameters 部分。
4,配置:(%%%%%%%% 为解压路径下的绝对目录)
1、包含目录
右击项目,打开项目属性页,配置一项选择所有配置
配置属性->C/C++->常规->附加包含目录中添加:
%%%%%%%%\include
%%%%%%%%\lib\vc_lib\mswu
2、库目录
配置属性->链接器->常规->附加库目录中添加:
%%%%%%%%%\lib\vc_lib
3、 MFC的使用
配置属性->MFC的使用:使用标准 Windows 库
4、依赖项
配置属性->链接器->输入->附加依赖项按照如下规则添加编译出来的lib文件:
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 // 以下4个千万不要忘记添加,否则会报 链接错误 错, rpcrt4.lib wsock32.lib odbc32.librelease 选项:
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.lib5、预处理器定义
配置一项改为Debug
配置属性->C/C++->预处理器->预处理器定义中添加:
__WXMSW__
__WXDEBUG__
Hello world 代码:
#include "wx\wxprec.h" #include "wx\wx.h" #include <iostream> #include <string> using namespace std; #ifndef WX_PRECOMP #include "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); // main function this macro is the main function // create an application instance and starts the program 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", "Hello string show 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!"); }
运行结果:
恶心错误
error LNK2019: 无法解析的外部符号 _main
1. 右击项目,打开“属性”页
2.更改上图红色框内容为/subsystem:windows。如果是刚开始默认的是/subsystem:windows
则改为/subsytem:console
更多编译方法及对各种编译器的支持,请参考解压文件夹下的如下文件:
%%%%%\docs\readme.txt
%%%%%\docs\msw\install.txt //windows的安装方法
%%%%%\docs\osx\install.txt // 苹果操作系统的安装方法
%%%%%\docs\x11\install.txt //LINUX操作系统的安装方法