• <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>

            Code Knight

            Programming is so cool
            隨筆 - 52, 文章 - 0, 評(píng)論 - 14, 引用 - 0
            數(shù)據(jù)加載中……

            VS05編譯wxWidgets

            找了好多文章照著做弄了一下午才弄好,自己歸總一下,wxWidgets版本2.8.9。

            導(dǎo)讀:
              1. 去http://www.wxwidgets.org/downloads/下載一個(gè)wxMSW版本的wxWidgets。
              2. 運(yùn)行安裝文件。在安裝好后設(shè)置環(huán)境變量WXWIN,指向wxWidgets的安裝目錄。因?yàn)榘惭b過(guò)程僅僅是把文件拷貝到指定的目錄,所以還需要對(duì)wxWidgets進(jìn)行編譯。
              3. 進(jìn)入$(WXWIN)\build\msw目錄,用VS2005打開(kāi)wx.dsw,提示是否進(jìn)行項(xiàng)目轉(zhuǎn)換,點(diǎn)確定。如果想要連接靜態(tài)運(yùn)行庫(kù),在編譯前應(yīng)該對(duì)每個(gè)項(xiàng)目進(jìn)行設(shè)置。
              
               
                     編譯Debug版本的庫(kù):用Visual Studio 2005打開(kāi)build\msw\wx.dsw文件,Solution Configurations中選中Unicode Debug,直接Build Solution就可以編譯出Debug版本的wxWidgets庫(kù)了。(默認(rèn)的是Multi-Threaded debug dll)
                編譯Relase版本的庫(kù):Release 版本的wxWidgets庫(kù)雖然也可以通過(guò)類(lèi)似的方法去編譯,但編譯出來(lái)的庫(kù)仍然依賴(lài)于visual studio 2005的運(yùn)行時(shí)庫(kù)。Debug版本的庫(kù)依賴(lài)VS2005也就算了,反正是自己調(diào)試用的。Release版本可是要給別人用的,再帶上一大堆dll就不好了。為了解決這個(gè)問(wèn)題,我們需要先在Solution Configuration中選中Unicode Release,然后在Solution Explorer中,針對(duì)每一個(gè)project在項(xiàng)目屬性的C/C++ --> Code Generation --> Runtime Library中選Multi-Threaded。(HOHO, 有20個(gè)項(xiàng)目要改屬性啊~~~)。最后再Build Solution就可以了。(也就是LIB庫(kù))

              
              編譯好后的wxWidgets會(huì)在$(WXWIN)\lib\vc_lib目錄下生成一系列的lib文件,這些lib文件的名字遵循下面的命名規(guī)則:不依賴(lài)于GUI組件的庫(kù)會(huì)以"wxbase"開(kāi)頭,緊跟著的是版本號(hào),然后的字母表明這個(gè)庫(kù)是否是編譯為Unicode('u')或是否是編譯為Debug('d'),名字中的最后部分是wxWidgets組件的名字。
              注意:wxWidgets編譯完后在$(WXWIN)\build\msw目錄下會(huì)生成許多預(yù)編譯頭文件,占了很大的空間,如果確定以后不再編譯wxWidgets庫(kù)的話,可以考慮刪掉。
              設(shè)置VC開(kāi)發(fā)環(huán)境
              打開(kāi)Tools -> Options -> Projects and Solutions -> VC++ Directories
              1. 在Include files中加入$(WXWIN)\include和$(WXWIN)\include\msvc
              2. 在Library files中加入$(WXWIN)\lib\vc_lib
              創(chuàng)建wxWidgets項(xiàng)目
              新建一個(gè)General -> Empty Project或Win32 -> Win32 Project項(xiàng)目,然后設(shè)置項(xiàng)目的一些屬性,可以選擇下面的其中一個(gè)來(lái)設(shè)置。譬如你如果打算使用Unicode,那么選擇Unicode Debug或Unicode Release,如果你僅僅想調(diào)試程序而非發(fā)布,則只需要選擇Debug設(shè)置。
              Debug:
              Project Properties -> General -> Character Set: No Set
              Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded Debug DLL (/MDd)
              Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28d.lib wxmsw28d_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

              Release:
              Project Properties -> General -> Character Set: No Set
              Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded (/MT)
              Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28.lib wxmsw28_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

              Unicode Debug:
              Project Properties -> General -> Character Set: Use Unicode Character Set
              Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded Debug DLL (/MDd)
              Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28ud.lib wxmsw28ud_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

              Unicode Release:
              Project Properties -> General -> Character Set: Use Unicode Character Set
              Project Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded (/MT)
              Project Properties -> Linker -> Input -> Additional Dependencies: wxbase28u.lib wxmsw28u_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

              問(wèn)題
              1. 在編譯時(shí)出現(xiàn)了Cannot open include file: '../mswu/wx/setup.h': No such file or directory錯(cuò)誤
              這是因?yàn)轫?xiàng)目屬性的Character Set設(shè)置不正確,必須與使用的wxWidgets庫(kù)的Character Set一致。
              2. 在編譯時(shí)出現(xiàn)了MSVCRT.lib(MSVCRT.dll) : error LNK2005: _free already defined in LIBC.lib(free.obj)
              這是因?yàn)闆](méi)有連接正確的wxWidgets庫(kù),譬如Unicode Debug版本的項(xiàng)目就需要連接Unicode+Debug版本的wxWidgets庫(kù)(庫(kù)名后綴為'ud'的lib文件)。或者是wxWidgets和Application使用的Runtime Library不相同。
              3. 運(yùn)行是出現(xiàn)No Debugging Information對(duì)話框
              將Project Properties -> Linker -> Debugging -> Generate Debug Info的值改成Yes (/DEBUG)。
            #ifndef WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722
            #define WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722

            //對(duì)于支持預(yù)編譯的編譯器,包含此文件
            // For compilers that support precompilation, includes "wx.h".
            #include <wx/wxprec.h>

            //對(duì)于不支持預(yù)編譯的編譯器,進(jìn)行如下操作
            #ifndef WX_PRECOMP
            // Include your minimal set of headers here, or wx.h
            #include <wx/wx.h>
            #endif

            //定義wxApp類(lèi)
            class HelloWorldApp : public wxApp
            {
            public :
                
            //在程序初始化時(shí)調(diào)用
                virtual bool OnInit();
                
            //在程序結(jié)束時(shí)調(diào)用
                virtual int OnExit();
            };

            //定義wxGetApp()函數(shù),可以取得HelloWorldApp類(lèi)型的全局程序變量
            DECLARE_APP(HelloWorldApp)

            #endif //WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722


            #ifndef WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722
            #define WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722

            //對(duì)于支持預(yù)編譯的編譯器,包含此文件
            // For compilers that support precompilation, includes "wx.h".
            #include <wx/wxprec.h>

            //對(duì)于不支持預(yù)編譯的編譯器,進(jìn)行如下操作
            #ifndef WX_PRECOMP
            // Include your minimal set of headers here, or wx.h
            #include <wx/wx.h>
            #endif

            //定義wxApp類(lèi)
            class HelloWorldApp : public wxApp
            {
            public :
                
            //在程序初始化時(shí)調(diào)用
                virtual bool OnInit();
                
            //在程序結(jié)束時(shí)調(diào)用
                virtual int OnExit();
            };

            //定義wxGetApp()函數(shù),可以取得HelloWorldApp類(lèi)型的全局程序變量
            DECLARE_APP(HelloWorldApp)

            #endif //WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722


            posted on 2009-02-16 22:59 Code Knight 閱讀(2991) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): GUI編譯記

            国产免费久久精品丫丫| 青青青青久久精品国产h久久精品五福影院1421 | 品成人欧美大片久久国产欧美...| 国产精品久久网| 国内精品久久久久久不卡影院 | 久久久久AV综合网成人| 亚洲国产成人久久综合一| 亚洲国产天堂久久久久久| 久久精品国产男包| 99久久久久| 久久精品无码午夜福利理论片| 亚洲&#228;v永久无码精品天堂久久| 少妇人妻综合久久中文字幕| 久久精品国产亚洲AV大全| 九九久久精品无码专区| 97久久久久人妻精品专区| 亚洲中文字幕无码久久2017| 精品久久久久久无码免费| 青青草国产精品久久| 久久99精品国产99久久6| 久久久久亚洲AV无码永不| 伊人色综合久久天天人守人婷| 色偷偷88888欧美精品久久久| 亚洲人AV永久一区二区三区久久 | 嫩草伊人久久精品少妇AV| 亚洲国产精品久久久久久| 久久久久久久亚洲Av无码| 久久久久久久女国产乱让韩| 婷婷综合久久狠狠色99h| 国产精品久久久久AV福利动漫 | 精品国产乱码久久久久久浪潮| 久久久久久国产精品免费无码 | 久久se精品一区精品二区| 久久超乳爆乳中文字幕| 亚洲国产精品无码久久98| 久久婷婷午色综合夜啪| 久久天天婷婷五月俺也去| 久久久久久伊人高潮影院| 久久精品国产AV一区二区三区| 亚洲精品99久久久久中文字幕 | 99久久伊人精品综合观看|