VC6(SP6)+STLPort4.6.2安裝全攻略

來源:互聯網
上載者:User

首先,我對VC/c++幾乎沒有經驗,STL也是剛開始學。為了用 stlport,瞎忙呼了大半天,也是剛剛裝好。為了避免自己或者別人安裝stlport時再走彎路,特記錄下這段經曆。由於我很菜,即使安裝完畢,仍有 很多不明之處,所以下面的文檔如果有錯誤,請您批評指出。文中還有一些疑問,希望學深入之後自己能解答,也歡迎網友幫我解答。
step by step, Now:
1.安裝VC6,打補丁sp6
 (http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx)
2.推薦安裝一個visual assist for VC6,這是個好東東。它使得編輯環境更加好用。
  (有個http://www.vcer.net/download.jsp?id=1042       http://www.vcer.net/upload/2004/04/1042.zip 不知道失效沒有)
3.到www.stlport.org下載STLPort。我下載的是stlport4.6.2
  (http://www.stlport.org/archive/STLport-4.6.2.tar.gz)
4.未使用stlport之前,先看看VC的stl庫的表現。
  作一個最簡單的工程,編一個cpp
    #include <vector>
    using namespace std;
    int main()
    {
        vector<int> v;
        v.push_back(0);
        return 0;
    }
   這個程式編譯能通過,把滑鼠放到vector和push_back上,右鍵到其定義處(goto the Definition of ...),在彈出的視窗,(注意到這些定義中std是小寫字串)。選中一個進入定義檔案,可以看出引用的是..../VC98/Include/ VECTOR檔案。這個目錄下還有LIST等等,這是VC6內建的STL實現。據說比較爛,沒用過我不瞭解:)
  
   但是下面這個程式就編譯不過了。
 #include <vector>
 #include <deque>
 
 using namespace std;
 int main()
 {
  const int arraySize = 7;
  int ia[arraySize] = {0, 1, 2, 3, 4, 5, 6};
  vector<int> v(ia, ia+arraySize);
  //v.push_back(0);
  deque<int> d(ia, ia+arraySize);
  return 0;
 }
 原因應該是VC6的deque不支援這樣的構造吧。但是這個程式在用gcc的Dev-c++下編譯就沒有問題。
 
 好了,儲存我們的工程,可以猜想,如果stlport安裝成功之後,應該是可以順利編譯的。
5.把下載的stlport壓縮包解壓,我假設解壓到C:/STLport(緊挨著C:/STLport的子目錄是stlport的src,doc,stlport等目錄)
6.編譯stlport
  (1) 設定環境變數,使得環境變數PATH中包含C:/Program Files/Microsoft Visual Studio/VC98/Bin
      (當然也可以不設定,如果你願意不厭其煩地打這個目錄名)
  (2) 開啟一個dos視窗(運行cmd)
  (3)  運行 ..../VC98/Bin中的VCVARS32.BAT:
    
     /*****
     a.修改..../VC98/Bin中的VCVARS32.BAT檔案,找到
          set INCLUDE=%MSVCDir%/ATL/INCLUDE;%MSVCDir%/INCLUDE;%MSVCDir%/MFC/INCLUDE;%INCLUDE%
          set LIB=%MSVCDir%/LIB;%MSVCDir%/MFC/LIB;%LIB%
        這兩句,加上STLPort的路徑,修改成如下:
          set INCLUDE=C:/STLport/stlport;%MSVCDir%/ATL/INCLUDE;%MSVCDir%/INCLUDE;%MSVCDir%/MFC/INCLUDE;%INCLUDE%
         set LIB=C:/STLport/lib;%MSVCDir%/LIB;%MSVCDir%/MFC/LIB;%LIB%
 
     (C:/STLport/lib目前還不存在,但不用著急,編譯完stlport就有了)
 
    注意:第(3)-a步驟修改VCVARS32.BAT這個檔案的內容完全沒有必要,我是看某些文檔上這麼寫的,但後來試了幾次,改不改這個檔案都沒有關係!所以不改算了。(這步驟登出!)
    ****/
 
    b.在dos視窗中運行..../VC98/Bin下這個檔案VCVARS32.BAT  (必須!!!)
 
  (4) 在同一個dos視窗中!進入C:/STLport/src目錄運行
      nmake -f vc6.mak clean all
      (問題,vc6還可以選擇支援unicode的vc6-unicode.mak檔案,但vc中unicode如何用,我還不瞭解:( )
  
    編譯需要一點時間,完成之後,你可以選擇運行 nmake -f vc6.mak install。
    注:install任務是可選的,看stlport的INSTALL文檔:       
    [quote]
        "install" target works on most platforms.
     On Win32, it does the following :
      - copies STLport headers in "stlport" subdirectory of your compiler's INCLUDE directory;
      - copies STLport .lib files in your compiler's LIB directory;
      - copies STLport DLLs to Windows system directory so they can be found at runtime.
      [/quote]
     
      dums(stlport論壇上的高手)建議一般不要用nmake install,我也強烈建議不要運行這個nmake install!!!如果你想vc的stl和STLPort的stl共存,那麼這個install任務就更加不要執行!!!
     
      (如果你還是要運行nmake install,並且運行有錯誤,則再運行一次VCVARS32.BAT先)
     
      /**
      問題:有個安裝文檔中寫到完成之後要修改C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin/SYSINCL.DAT,我沒有試,怎麼修改?有什麼用?
      **/
     
7.配置vc
   進入VC,編譯前面那個有錯的cpp,發現還是有同樣的編譯錯誤。
   (即使修改了VCVARS32.BAT,加上stlport的路徑,也沒有用!似乎這個檔案不能把include和lib加入。這也是我說為什麼不用修改VCVARS32.BAT的原因,不明白這個檔案在運行vc時的作用,請您指正:) )
  
   點擊vc的tools-options-Directories,
     選擇Include files,加入C:/STLPORT/STLPORT,並調到最前面
     選擇Library files,加入C:/STLPORT/LIB,並調到最前面
   編譯工程,呵呵,應該通過了吧。同樣的,為了驗證我們用的是stlport的STL庫,把滑鼠放到程式中vector和push_back上,右鍵到其定 義處(goto the Definition of ...),在彈出的視窗,(注意到這些定義中STL是大寫的字串了)。選中一個進入定義檔案,可以看出引用的是C:/STLport/stlport/ stl/_vector.h了。
   (如果有問題,試著Build-Clean清除掉緩衝)
  
引申:
   現在只是能基本的使用stlport,unicode版本的編譯沒有試。另外stlport本身也有較複雜的配置,能進行最佳化,靜態連結等配置。我還沒用 到那個程度,不過有點提示,如果想進行配置,請看STLport的config檔案 (stlport/stl_user_config.h 和 stlport/stl/_site_config.h)其中的注釋告訴我們怎麼作。
  
   如果大家有什麼疑問和高招,歡迎和我聯絡yadan6388@126.com。我對資料結構和STL有興趣。2004.8.20
   Good luck:)
  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.