wxWidget vs2010 环境配置

来源:互联网 发布:战略纵深 知乎 编辑:程序博客网 时间:2024/05/22 17:20

引言:

     wxWidget的环境配置其实就是,将wxWidget的库头文件、静态库、动态库、引入你的工程、另外配置一些 wxWidget 特定的预处理宏定义。所以在你看到这个环境配置的时候不要想得太复杂,另外如果你配置完后,编译测试程序是如果出现错误,那么主要是如下两种情况导致:

     1、特定的宏没有预定义, 你要看你自己使用了哪些特殊的库,来判断增加了。

     2、使用的静态库或动态库没有引入,同上根据自己的使用情况去增加。

     3、如果你编译通过了,但是运行提示 xxxx.dll 找不到,那就是由于 dll 文件没有放到 运行目录下(一般release 后 库文件是要和 .exe 在一起的), 当然如果你不想再编码的时候总是去移动的话,可以选择在工程属性 >> 配置属性 >> 调试 >> 工作目录  >> 设置你自己的存放 库文件(*.lib *.dll) 的路径。

   

正文: vs2010 配置最基本的 GUI 环境

     1、wxWidget 下载,

         1.1 可以到wxWidget 官网 http://www.wxwidgets.org/downloads/  下载源码

         1.2 sourceForge 下载现成的编译好的库 http://sourceforge.net/projects/wxwindows/files/2.9.4/binaries/ ,注意这里要下载 一个 头文件的包和一个库文件的包如:wxWidgets-2.9.4_Headers.7z+wxMSW-2.9.4_vc100_Dev.7z

    2、vs2010 创建一个空工程,个人建议工程文件结构:

         wxWidget  

          >>project   //存放工程文件

          >> lib          //存放引用库文件,比如现在的 wxWidget ,我是将 wxWidgets-2.9.4_Headers.7z 包中的include 和wxMSW-2.9.4_vc100_Dev.7z >> vc100_dl 下的所有文件和 放在lib下。

          >> src         //你自己的头文件

          >> out        //工程的输出文件 如 .exe

     3、配置工程

         3.1 工程 >> 属性 >> 配置属性 >> 常规 >> 输出目录 >> 设置上面的 out 目录 ( 可选操作)

         3.2 工程 >> 属性 >> 配置属性 >> c/c++ (如果没有这个选项,请先添加一个cpp文件就有了) >> 常规 >> 附加包含目录 >> 设置 wxWidget 的 头文件所在目录 (include目录)路径、wxWidget库文件所在目录下的 mswu / mswud (多个d代表debug)

         如果你是在第二步中将 wxWidget 包按我的方式放的。就是  添加  1、 你的工程路径/wxWidget/lib/mswu 和 你的工程路径/wxWidget/lib/include

         3.3 工程 >> 属性 >> 配置属性 >> c/c++ (如果没有这个选项,请先添加一个cpp文件就有了) >> 预处理器 >> 预处理定义 添加 _WINDOWS 和  WXUSINGDLL

        3.4  工程 >> 属性 >> 配置属性 >> 连接器 >> 附加库目录 >> 增加 .dll 和 .lib 文件所在目录, 我是   你的工程路径/wxWidget/lib

        3.5 工程 >> 属性 >> 配置属性 >> 连接器 >> 输入 >> 附加依赖项 >> 添加 wxmsw29ud_core.lib  wxbase29ud.lib

        3.6 工程 >> 属性 >> 配置属性 >> 连接器 >> 系统 >> 子系统 >> 窗口系统

   4、测试代码:

// wxWidgets "Hello world" Program// For compilers that support precompilation, includes "wx/wx.h".#include <wx/wxprec.h>#ifndef WX_PRECOMP#include <wx/wx.h>#endifclass 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!");}
编译运行 就可以看到一个含菜单,状态栏的 frame 了