• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            zyzx的小窩

            C/C++,GUI,個人移動存儲,zyzx_lsl@163.com

             

            (轉)Eclipse+WxWidgets開發環境搭建

            2/24/2008

            Eclipse+WxWidgets開發環境搭配

            一直在尋找一個方便使用的C++GUI庫。今天終于把WxWidgets搞定。

            大致的步驟是四步:
            第一步,Eclipse及CDT的安裝
            第二步,MinGW及編譯器的安裝配置
            第三步,wxWidget的下載及編譯
            第四步,Eclipse下有關wxWidget的配置

            搞定wxWidget的配置、開始編寫像樣的windows程序

            ----Richard Lee 回味


            看了網上的絕大部分文章,多半解決不了什么問題,還有可能誤入歧途,浪費更多的時間在前期這準備工作上。
            所以,把這些配置的詳細步驟寫出來,希望能為后來者指點迷津,切莫再花時間再環境的搭建上了。
            大致的步驟是四步:

            第一步,Eclipse及CDT的安裝
            第二步,MinGW及編譯器的安裝配置
            第三步,wxWidget的下載及編譯
            第四步,Eclipse下有關wxWidget的配置

            經過這四步相信你就應該可以正常調試你的窗口程序了。
            ok,我們開始。

            第一步 Eclipse及CDT的安裝
            這步其實沒啥說的,是最簡單的一步,用過eclipse及安裝過插件的人都應該很快搞定。
            下載Eclipse最新版本,到我寫這篇文章時應該是3.2版,由 http://www.eclipse.org 下載,當然首先你要先下載JDK并正確安裝和注冊環境變量path(將你的jre的bin目錄路徑cut到path里),再啟動Eclipse 應該看到正常啟動畫面。
            再到eclipse的網站上找到CDT,下載它,當然你應該選擇最近的版本下載。
            下載后,進行解壓,并直接將解壓后得到的諸多文件及文件夾 Copy到Eclipse原目錄下。重新啟動Eclipse,這時再新建工程,你應該能見到 C/C++工程這項了。
            到這里,你的CDT算是安裝成功了。

            第二步 MinGW及編譯器的安裝配置
            這部分主要是MinGW的下載及安裝配置。
            由于單獨的Eclipse + CDT 是不能完成C++工程開發的,因為至少還缺少編譯器及基礎類庫,這里我們選擇MinGW工具,你需要到 http://www.MinGW.org 上去下載最新版本的MinGW。
            到目前為止,最新版本是5.0.2版,你從它網站上直接download下來的應該是一個100多k的下載端軟件,還需要繼續下載全部內容,運行該下載文件后,按要求逐步推進,如果你是下載壓縮包,即只下載需要的部分,那么你選擇下載以下這幾部分
            • gcc-g++-3.4.2-20040916-1.tar.gz
            • gcc-core-3.4.2-20040916-1.tar.gz
            • mingw32-make-3.80.0-3.tar.gz
            • mingw-runtime-3.9.tar.gz
            • mingw32-make-3.80.0-3.tar.gz
            • binutils-2.15.91-20040904-1.tar.gz
            • w32api-3.6.tar.gz
            下 載完成后,首先將他們拷貝到同一目錄下,并將它們解壓在同一目錄下面(例如我的mingw安裝目錄是c:\mingw,那么需要將這7個壓縮文件全部直接 在c:\mingw解壓)。然后設置環境變量確保在PATH環境變量中包含"d:\mingw\bin",最后可以打開DOS控制臺輸入gcc來驗證環境 變量是否設置正確。如果你的DOS控制臺顯示“no input file”等相關信息,那么你這一步也算完成了。
            第三步,wxWidget的下載及編譯
            wxWidget由 http://www.wxWidgets.org 下載并安裝,目錄自選。
            安裝好后,直接進入你wxWidgets的安裝目錄 (舉例:c:\wxWidgets-2.8.0\build\msw)中,在這里執行命令
            mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1 USE_ODBC=1

            通過makefile.gcc 這個文件將整個項目編譯好,你會等很久大約半個多小時,編譯后目錄漲到800多M,因為一部分是.o的中間文件,
            可以刪除。

            編譯后你會在安裝目錄的(c:\wxWidgets-2.8.0\lib\gcc_lib)下看到一堆擴展名為 .a 的Archive文件(windows下的庫文件為.lib
            linux下為 .a)和幾個目錄,類似mswu,mswud。
            第三步完成。

            第四步,Eclipse下有關wxWidgets的配置

            首先啟動你的Eclipse并建立一個Managed C++ Project。創建完成后右鍵該項目并選擇"Properties"屬性對話框在其中選擇“C/C++ Build"選項。
            在C/C++Build選項界面中,選擇“Configuration Settings”的"Tool Settings“。
            在Tool Settings中選擇"GCC C++ Compiler"->"Preprocessor",
            在Defined symbols列表中加入:__WXMSW__ (注意,兩側都是雙下劃線), __WXDEBUG___UNICODE(此處是單下劃線,
            因為你的wxWidgets是用unicode編碼編譯的,所以此處一定要設置該宏,不然在編譯時會收到大量"undefined reference")。
            接下來你需要選擇Directories項并添加include及lib目錄,在這里你需要添加
            "C:\wxWidgets-2.8.0\lib\gcc_lib\mswud"
            "C:\wxWidgets-2.8.0\lib\gcc_lib\mswu"
            "C:\wxWidgets-2.8.0\include"
            "C:\wxWidgets-2.8.0\contrib\include"
            這四個目錄進Directories。
            接下來在下面的 Miscellaneous 選項中的Other Flags中輸入以下這句

            -c -Wundef -Wno-ctor-dtor-privacy -fno-strict-aliasing

            接下來點選到 "GCC C++ Linker" 部分。在這部分,首先選擇"Libraries"并在右側的Libraries欄中按順序鍵入以下庫名:

            wxmsw28ud_xrc,wxmsw28ud_richtext, wxbase28ud_net, wxmsw28ud_dbgrid, wxbase28ud_odbc,wxmsw28ud_media, wxmsw28ud_aui, wxmsw28ud_html, wxmsw28ud_adv,wxbase28ud_xml, wxmsw28ud_core, wxbase28ud, wxtiffd, wxjpegd, wxpngd,wxzlibd, wxregexud, wxexpatd, kernel32, user32, gdi32, comdlg32,winspool, winmm, shell32, comctl32, ole32, oleaut32, uuid, rpcrt4,advapi32, wsock32, odbc32

            庫名全部加入后在下面一欄的"Library search path (-L)"中加入以下目錄

            "C:/wxWidgets-2.8.0/lib/gcc_lib"

            "C:/wxWidgets-2.8.0/lib"

            添加完成后,選擇該部分中的"Miscellaneous"項,并在"Linker flags"中鍵入

            -Wl,--subsystem,windows -mwindows

            此時,點擊應用。

            再切換到"Build Settings"標簽頁,勾掉"Build Command"中的,"Use default command"前的勾兒,并將命令 make 改為

            mingw32-make -fmakefile

            最終,點擊"OK"使設置生效。

            到這里,你可以把wxwidgets中的samples拿來試一試了,把代碼Copy進你的工程,編譯運行一下,看看結果。

            我想,你應該成功了。。。。

            下面是第一個WxWidgets程序的代碼:

            #include "wx/wx.h"
            using namespace std;
            class MyApp:public wxApp
            {
            ??? public:
            ??? vrtual 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()

            IMPLEMENT_APP(MyApp)

            bool MyApp::OnInit()
            {
            ??? MyFrame *frame = new MyFrame( wxT("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((wxFrame *)NULL, -1, title, pos, size)
            {
            ??? wxMenu *menuFile = new wxMenu;

            ??? menuFile->Append( ID_About, wxT("&About...") ) ;
            ??? menuFile->AppendSeparator();
            ??? menuFile->Append( ID_Quit, wxT("E&xit") ) ;

            ??? wxMenuBar *menuBar = new wxMenuBar;
            ??? menuBar->Append( menuFile, wxT("&File") ) ;

            ??? SetMenuBar( menuBar ) ;

            ??? CreateStatusBar();
            ??? SetStatusText( wxT("Welcome to wxWindows!") ) ;
            }

            void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
            {
            ??? Close(TRUE);
            }

            void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
            {
            ??? wxMessageBox(wxT("This is a wxWindows Hello world sample"),
            ??? wxT("About Hello World"), wxOK | wxICON_INFORMATION, this) ;
            }


            注:
            ?? 編譯wxWigets時候mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1 USE_ODBC=1
            ???
            SHARED = 0 表示 靜態編譯;SHARED =1 表示動態編譯
            ??? USE_ODBC=1 是默認的(可設置為0)??? :使用ODBC數據庫
            ??? USE_GL = 1 是默認的
            (可設置為0)??? ?? :使用OpenGL庫
            ??? 詳細編譯選項見<wx/setup.h>

            ??? 如果采用動態編譯,
            Defined symbols預定義?)中必須定義WXUSINGDLL,如果為Debug版本還得添加MinGW的運行時庫mingwm10.dll。

            ??? 上面提到的:如果編譯Debug版本,需要定義
            __WXDEBUG__;Release版本則不需要。

            下圖是:上面的代碼,在vista 下動態編譯的Debug 版本
            TestWxWidgets.png

            posted on 2009-04-27 16:54 zyzx 閱讀(1981) 評論(0)  編輯 收藏 引用 所屬分類: wxWidgets界面庫

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            常用鏈接

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            精品久久久久久无码中文野结衣| 久久久久精品国产亚洲AV无码| 久久99国产精品尤物| 久久精品国产久精国产思思| 久久免费视频网站| 日日狠狠久久偷偷色综合0| 久久这里只有精品首页| 精品视频久久久久| 亚洲欧美国产日韩综合久久| 婷婷伊人久久大香线蕉AV| 久久精品国产影库免费看 | 国产V亚洲V天堂无码久久久| 久久综合丝袜日本网| 久久夜色精品国产噜噜亚洲a| 91精品国产乱码久久久久久| 久久乐国产精品亚洲综合| 91精品国产91久久| 久久精品国产99久久久古代| 国产高潮久久免费观看| 色综合久久无码中文字幕| 久久精品无码专区免费| 99久久99久久精品免费看蜜桃| 久久综合久久伊人| 久久成人精品| 青青青伊人色综合久久| 精品久久久久久无码专区| 成人午夜精品无码区久久| 欧美与黑人午夜性猛交久久久| 美女写真久久影院| 国内精品久久久久久野外| 午夜不卡久久精品无码免费| 人人妻久久人人澡人人爽人人精品 | 久久高清一级毛片| 亚洲午夜精品久久久久久人妖| 久久综合久久自在自线精品自| 久久久SS麻豆欧美国产日韩| 亚洲国产成人久久笫一页| 欧美成a人片免费看久久| 久久综合狠狠综合久久97色| 久久久久99精品成人片| 欧美亚洲日本久久精品|