• <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, 評論 - 14, 引用 - 0
            數據加載中……

            VS05編譯wxWidgets

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

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

              
              編譯好后的wxWidgets會在$(WXWIN)\lib\vc_lib目錄下生成一系列的lib文件,這些lib文件的名字遵循下面的命名規則:不依賴于GUI組件的庫會以"wxbase"開頭,緊跟著的是版本號,然后的字母表明這個庫是否是編譯為Unicode('u')或是否是編譯為Debug('d'),名字中的最后部分是wxWidgets組件的名字。
              注意:wxWidgets編譯完后在$(WXWIN)\build\msw目錄下會生成許多預編譯頭文件,占了很大的空間,如果確定以后不再編譯wxWidgets庫的話,可以考慮刪掉。
              設置VC開發環境
              打開Tools -> Options -> Projects and Solutions -> VC++ Directories
              1. 在Include files中加入$(WXWIN)\include和$(WXWIN)\include\msvc
              2. 在Library files中加入$(WXWIN)\lib\vc_lib
              創建wxWidgets項目
              新建一個General -> Empty Project或Win32 -> Win32 Project項目,然后設置項目的一些屬性,可以選擇下面的其中一個來設置。譬如你如果打算使用Unicode,那么選擇Unicode Debug或Unicode Release,如果你僅僅想調試程序而非發布,則只需要選擇Debug設置。
              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

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

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

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

            //定義wxApp類
            class HelloWorldApp : public wxApp
            {
            public :
                
            //在程序初始化時調用
                virtual bool OnInit();
                
            //在程序結束時調用
                virtual int OnExit();
            };

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

            #endif //WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722


            #ifndef WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722
            #define WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722

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

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

            //定義wxApp類
            class HelloWorldApp : public wxApp
            {
            public :
                
            //在程序初始化時調用
                virtual bool OnInit();
                
            //在程序結束時調用
                virtual int OnExit();
            };

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

            #endif //WXWIDGETS_EXAMPLE_HELLOWORLDAPP_H_20080722


            posted on 2009-02-16 22:59 Code Knight 閱讀(3000) 評論(0)  編輯 收藏 引用 所屬分類: GUI編譯記

            无码8090精品久久一区| 久久久青草久久久青草| 午夜精品久久久久9999高清| 2020久久精品亚洲热综合一本| 亚洲欧美日韩精品久久亚洲区| 精品国产青草久久久久福利| 久久精品国产秦先生| 午夜精品久久久久| 精品久久久久久| 久久久久久久精品妇女99| 99久久精品国产麻豆| 一级女性全黄久久生活片免费| 久久精品国产亚洲AV影院| 18岁日韩内射颜射午夜久久成人| 亚洲精品无码久久不卡| 久久91亚洲人成电影网站| 伊人久久综合精品无码AV专区| 狠狠色丁香婷婷综合久久来来去| 久久久久99精品成人片试看| 色妞色综合久久夜夜| 久久久久久一区国产精品| 国产亚洲精久久久久久无码AV| 亚洲AV乱码久久精品蜜桃| 色婷婷噜噜久久国产精品12p| 一本大道久久a久久精品综合| 久久99久久99精品免视看动漫| 久久久久久免费视频| 色老头网站久久网| 久久伊人五月天论坛| 久久久久亚洲精品男人的天堂| 国产精品成人无码久久久久久 | 91精品国产高清久久久久久io | 久久亚洲高清综合| 久久国产精品波多野结衣AV| 久久精品国内一区二区三区| 久久综合久久综合久久| 一级做a爰片久久毛片人呢| 国产香蕉97碰碰久久人人| 狠狠色综合网站久久久久久久| 国产精品内射久久久久欢欢| 久久精品无码一区二区三区免费|