程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Boost學習總結(一)VS2010環境下編譯STLport和Boost,vs2010stlport

Boost學習總結(一)VS2010環境下編譯STLport和Boost,vs2010stlport

編輯:C++入門知識

Boost學習總結(一)VS2010環境下編譯STLport和Boost,vs2010stlport


Boost學習總結(一)VS2010環境下編譯STLport和Boost

Boost簡介

Boost庫是一個功能強大、構造精巧、跨平台、開源並且完全免費的C++程序庫。1998年,Beman G.Dawes(C++標准委員會成員之一)發起倡議並建立了Boost社區,目的是向C++程序員提供免費的、同行審查、可移植的高質量C++源程序庫。Boost涵蓋了字符串與文本處理、容器、迭代器、算法、圖像處理、模板元編程、並發編程等等,使用Boost,將大大增強了C++的功能和表現力。

STLport是什麼?

STLport是一個完全符合C++98標准的一個免費的C++標准庫實現。STLport具有很多其他STL實現所沒有的優點。首先是高度的可移植性,可以配合市面上幾乎所有的操作系統和編譯器使用,使開發的程序能夠在不同的編譯平台上獲得一致的標准庫實現。其次是性能表現優秀。第三個優點是在標准之外增加了若干有用的擴展,如rope(增強的字符串類)、slist(單鏈表數據結構)、hash_map(散列映射容器)以及支持線程安全。

接下來,我們就將STLport和Boost安裝並學習使用這兩個庫。

安裝VS2010

首先第一步,我們下載安裝visual studio 2010。下載戳這裡:visual studio 2010

安裝步驟如下:

首先解壓壓縮包,需要幾分鐘的時間,然後雙擊setup.exe.

 

最後的安裝得需要三十分鐘左右,安裝完成之後還會彈出一兩個窗口,就不需要管了,直接各種取消之。

編譯STLport

下載STLport地址在這裡:http://sourceforge.net/projects/stlport/

我選擇的是STLport-5.2.1版本,下載的是壓縮包STLport-5.2.1.tar.bz2。和Boost一樣,我們需要對其解壓、編譯之後才能使用這個庫。

在【開始】菜單裡打開vistual studio 2010下子文件vistual studio tools文件裡的vistual studio命令提示(2010)。

 

第一步:執行E:\C++\STLport-5.2.1(這裡我是以我的安裝路徑為准),進入了STLport目錄;

第二步:configure msvc9(雖然我們安裝的10版本,好像msvc10不行),配置編譯環境;

第三步:執行cd build\lib;

第四步:執行命令nmake -f msvc.mak clearn install。

等待數分鐘之後就可以了,這裡因為我之前安裝的時候忘記截圖了,所以就沒有辦法給出圖片顯示,如果編譯不成功的話,可以按照下面的方法改之。(這是我在網上找到的解決方法)

目前為止,應該把STLport編譯成功了吧,呆會兒等編譯Boost完成之後,一起來對這兩個庫進行測試。

編譯Boost

下載Boost的官方網址:www.boost.org。但是打開速度太慢了,索性就在網上找到了壓縮包boost_1_56_0.7z,然後解壓就可以了。

 

雙擊之後,我們會得到四個文件,其中有兩個文件就是上圖中所看到的b2.exe和bjam.exe。

注意:接下來的編譯需要一個小時左右的時間,這是一個很蛋疼的事情。

然後打開VS的命令提示窗口,運行bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="E:\C++\boost_1_56_0\bin\vc10"  link=static runtime-link=shared threading=multi debug release

stage:表示只生成庫(dll和lib),用install的話還會生成包含頭文件的include目錄。

toolset:指定編譯器,VS2010用msvc-10.0。

without/with:表示不編譯/編譯哪些庫。

stagedir:當使用stage時用stagedir,使用install用prefix,表示編譯生成文件的路徑。路徑的命名最好和編譯器相關,編譯管理。

link:指定生成動態鏈接庫或靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用static方式。

runtime-link:動態/靜態鏈接C/C++運行時庫。有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式。

threading:單/多線程編譯。

debug/release:編譯debug/release版本。一般都是程序的debug版本對應庫的debug版本,所以兩個都編譯。

在VS2010中測試STLport和Boost

我們運用VS10新建一個工程之後,右擊工程名,選擇屬性,在VC目錄裡我們把Boost和STLport加入到這個工程裡面去。

包含目錄:E:\C++\boost_1_56_0;$(IncludePath);E:\C++\STLport-5.2.1\stlport;$(IncludePath)

庫目錄:E:\C++\boost_1_56_0\bin\vc10\lib;$(LibraryPath);E:\C++\STLport-5.2.1\lib;$(LibraryPath);

這個根據自己的路徑改一下就可以了,緊接著編寫代碼測試。

 1 #include<iostream>
 2 #include<boost/thread.hpp>
 3 using namespace std;
 4 
 5 void threadFunc() {
 6     cout<<"This is a Thread function."<<endl;
 7 }
 8 
 9 int main() {
10     boost::function<void()> func(threadFunc);
11     boost::thread t(func);
12     t.join();
13     return 0;
14 }

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<algorithm>
 7 #include<rope>
 8 #define inf 0x7fffffff
 9 using namespace std;
10 
11 int main() {  
12     // crope是用來存儲char字符的容器   
13     crope crope1("Hello,");
14     crope crope2("STLport!");
15     cout<<crope1+crope2<<endl;
16     cout<<"BaiYiShaoNian"<<endl;
17     return 0;
18 }  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved