在VS2012中使用wxWidgets3.1

wxWidgets是一个历史悠久、基础雄厚的,可跨多种平台的多功能图形用户界面库。最初它曾被命名wxWindows,它受着Windows的MFC的深远影响,很多概念都和MFC很类似,最初命名的基本含义也就是MFC的移植库,后面为了不让使用者引起“只能在Windows下使用”的歧义,才正式改名为wxWidgets。

1、下载wxWidgets 3.1和vs2012

·        下载wxWidgets源码包(官网),我用的是3.02版;

·        安装Visual Studio。我用的是VS 2012;

下载地址:http://sourceforge.net/projects/wxwindows/files/?source=navbar

我下载的地址是https://github.com/wxWidgets/wxWidgets

下载完以后安装到任意目录下。(其实就相当于解压缩以下,下载的是源代码)

2、编译源码

a、解压wxWidgets的源码包,会得到一大堆文件。进入build\msw文件夹,这个文件夹内是专门为Visual Studio提供的工程文件。在里面能找到从VC7到V12的工程文件。我用的是VS 2012所以选择的是VC11。


b、开始编译。因为我们下载的是源文件,而要把转化为库文件(如果对库的概念不是很了解可以上网查查)就需要编译挣个解决方案,对于编译时间大家不用担心,非常的快!!!我编译23个项目大概花了3-4分钟的样子。

3、建立测试项目配置项目属性:

首先建立一个Win32空项目或者直接空项目都可以(注意如果建控制台项目后面会报错)。

将下面的测试源代码源代码加入到一个cpp文件中。

#include "wx/wx.h"
class MyApp: public wxApp
{
    virtual bool OnInit();
};
class MyFrame: public wxFrame
{
public:
    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
    void OnQuit(wxCommandEvent& event);
    void OnAbout(wxCommandEvent& event);
    DECLARE_EVENT_TABLE()
};
enum
{
    ID_Quit = 1,
    ID_About,
};
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_MENU(ID_Quit,  MyFrame::OnQuit)
    EVT_MENU(ID_About, MyFrame::OnAbout)
END_EVENT_TABLE()
bool MyApp::OnInit()
{
    MyFrame *frame = new MyFrame( _("Hello World"), wxPoint(50, 50), wxSize(450, 340) );
    frame->Show(true);
    SetTopWindow(frame);
    return true;
}
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
       : wxFrame(NULL, -1, title, pos, size)
{
    wxMenu *menuFile = new wxMenu;
    menuFile->Append( ID_About, _("&About...") );
    menuFile->AppendSeparator();
    menuFile->Append( ID_Quit, _("E&xit") );
    wxMenuBar *menuBar = new wxMenuBar;
    menuBar->Append( menuFile, _("&File") );
    SetMenuBar( menuBar );
    CreateStatusBar();
    SetStatusText( _("Welcome to wxWidgets!") );
}
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
    Close(true);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
    wxMessageBox( _("This is a wxWidgets Hello world sample"),
                  _("About Hello World"), 
                  wxOK | wxICON_INFORMATION, this );
}
IMPLEMENT_APP(MyApp)

现在编译这个文件显然是通不过的,下面要对编译选项进行配置

4、包含目录:

在项目——属性——VC++目录——附加包含目录下加入wxWidgets库的头文件(此头文件是安装文件夹里的include文件夹)


这样系统就能知道你引用的头文件来自哪里了

5、包含库目录(让系统知道你即将使用的库文件来自哪里。)

项目——属性——VC++目录——库目录在库目录里加入wxWidgets安装文件夹下的lib/vc_lib文件夹


6、使用库。

把项目要用到的lib附加到项目属性中

项目--属性--链接器--输入--附加依赖库项,编辑这里要非常注意!!!

加入库名称:

wxmsw31ud_core.lib
wxbase31ud.lib
wxtiffd.lib
wxjpegd.lib
wxpngd.lib
wxzlibd.lib
wxregexud.lib
wxmsw31ud_adv.lib
wxmsw31ud_html.lib
wxmsw31ud_xrc.lib
wxbase31ud_net.lib
wxbase31ud_xml.lib
wxexpatd.lib
winmm.lib
comctl32.lib
rpcrt4.lib
wsock32.lib

编译运行就出现了如下界面了:



wxWidgets不支持图形界面拖动那种设计方式,所以必须通过绝对位置和相对位置来确定各个控件的布局,故很多前辈推荐使用wxFormBuilder。


/****************************************************************************/

配置中出现的错误:

²  “MSVCRTD.lib(crtexe.obj): error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用”

出现这种报错是因为我之前建的是控制台项目,后来换成普通win32项目就好了。

下面两篇博客也有有提到此类错误:

http://blog.csdn.net/tonykk2008/article/details/8177636

http://www.cnblogs.com/minggoddess/archive/2010/12/15/1907180.html

 

wxWidgets和其他跨平台开发库比拼的PK图表:



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值