1,下载wxwidgets包,
可以下载已经编译好的版本,但是我在github上提供的链接里面找不到已经编译好的版本,只能使用这种方法自己编译了,即,使用源代码版,自己编译,这里讲的是自己编译方法
![](https://i-blog.csdnimg.cn/blog_migrate/364adeb3b786ee9d67c2107a2817a6ca.png)
2,解压
将下载好的源代码压缩文件解压到任意位置,路径下不要有空格或者中文字符,免得出错,特别是不要将其解压到 “C:\Program Files” ,免得makefile或者使用命令行时出错。
3,编译:vs C++ 编译器,从命令行处编译
打开命令行工具Visual Studio Command Prompt,在开始菜单处有
![](https://i-blog.csdnimg.cn/blog_migrate/532a3ca00d536cf282e7429a6a624710.png)
将路径更改到 %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.lib
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
5、预处理器定义
配置一项改为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!");
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/240b281ce4c575f2321031be5f708743.png)
恶心错误
error LNK2019: 无法解析的外部符号 _main
1. 右击项目,打开“属性”页
![](https://i-blog.csdnimg.cn/blog_migrate/42d12bb7ae49642d1450472819d462bc.png)
2.更改上图红色框内容为/subsystem:windows。如果是刚开始默认的是/subsystem:windows
则改为/subsytem:console
更多编译方法及对各种编译器的支持,请参考解压文件夹下的如下文件:
%%%%%\docs\readme.txt
%%%%%\docs\msw\install.txt //windows的安装方法
%%%%%\docs\osx\install.txt // 苹果操作系统的安装方法
%%%%%\docs\x11\install.txt //LINUX操作系统的安装方法