在Visual Sutdio 2017中使用boost庫

對C++有一定了解的同學(xué)一定聽說過boost庫区拳,這是C++的一個著名類庫渐苏,在C++的地位感覺可以和Spring在Java中相比呻畸。boost向來有準(zhǔn)標(biāo)準(zhǔn)庫之稱翩蘸,很多新特性例如智能指針等都是先在boost中實(shí)現(xiàn),后來被吸收到標(biāo)準(zhǔn)庫之中变汪。而且boost實(shí)現(xiàn)了日志侠坎、算法、日期裙盾、地理实胸、數(shù)學(xué)、線程協(xié)程等各種實(shí)用工具番官,所以如果要學(xué)習(xí)C++庐完,boost是必須要學(xué)習(xí)的一個東西。

安裝boost

下載boost

boost官網(wǎng)是http://www.boost.org/徘熔,目前最新的版本是1.68门躯,可以在這里下載。下載頁面里有Unix和Windows的源碼近顷,以及Windows版本的預(yù)編譯包生音。我們選擇預(yù)編譯下載。

下載頁面

然后會彈出SourceForge的頁面窒升,按照自己的系統(tǒng)版本和Visual Studio版本選擇最合適的版本下載缀遍,如果不確定的話,就下載all那個版本饱须,是是最全的同時也是最大的域醇。紅框標(biāo)的是適合Visual Studio 2017的64位boost庫版本。后綴exe的是自解壓安裝包蓉媳,下載之后打開它譬挚,選擇一個目錄,就會將預(yù)編譯的boost庫解壓到那里酪呻。

選擇版本

另外一種方式就是下載源碼减宣,下載完成后解壓到一個目錄,例如我就放到了D:\DevTools\boost_1_68_0玩荠,目錄結(jié)構(gòu)如下圖漆腌。如果用下載源碼這種方式,那么后面必須執(zhí)行編譯這一個步驟阶冈。如果用的是預(yù)編譯版本闷尿,則不需要編譯。我推薦大家下載預(yù)編譯的版本女坑,因?yàn)榫幾g這個過程實(shí)在是太慢了填具,沒幾個小時下不來。

目錄結(jié)構(gòu)

boost目錄下是boost的頭文件匆骗,libs下是boost的源代碼劳景。其他文件夾的內(nèi)容是文檔和一些工具等等,就不介紹了碉就。

添加環(huán)境變量

將你放置boost代碼的目錄設(shè)置為環(huán)境變量BOOST_ROOT枢泰,這個目錄將在后面用到。

編譯boost庫

首先確保你安裝了Visual Studio 2017铝噩,并安裝了 Visual Studio 2017 Developer Command Prompt工具衡蚂。如果前面下載的是預(yù)編譯版本,則不需要這個步驟骏庸。

打開VS 2017 Developer Command Prompt毛甲,切換到boost目錄,執(zhí)行bootstrap.bat腳本具被,如果執(zhí)行成功的話玻募,會生成b2.exe等幾個工具,這樣生成工具的工作就完成了一姿。

然后簡單調(diào)用生成的b2.exe就可以編譯boost庫了七咧。

b2.exe

這個過程可能會持續(xù)幾個小時時間跃惫,因?yàn)閎oost庫確實(shí)也是一個比較大的項(xiàng)目。當(dāng)然編譯這個步驟不是必須的艾栋,但是如果你想將來在項(xiàng)目中使用預(yù)編譯的boost類庫爆存,那么這里就需要編譯』壤或者也可以直接在下載的時候直接選擇下載預(yù)編譯的版本先较。

Visual Studio設(shè)置

項(xiàng)目設(shè)置

在VS中新建一個C++項(xiàng)目,然后打開項(xiàng)目屬性頁悼粮,然后切換到VC++目錄闲勺,在包含目錄和庫目錄中分別添加BOOST_ROOTBOOST_ROOT\libs兩個文件夾。注意圖中的語法扣猫,拼寫正確才能正確將環(huán)境變量展開為實(shí)際路徑菜循。

項(xiàng)目屬性頁
包含目錄
庫目錄

然后打開鏈接器配置,在附加庫目錄中添加對應(yīng)的文件夾申尤。如果使用的是預(yù)編譯的boost债朵,添加安裝目錄中的libXX-msvc-XXX(根據(jù)你下載的版本而不同),如果是自己源碼編譯的boost瀑凝,添加stage\libs目錄(這個是編譯之后生成的目錄)序芦。

鏈接路徑

配置完成后,就可以在項(xiàng)目中使用boost了粤咪。當(dāng)然對于Visual Studio來說谚中,還有更簡單的辦法,那就是使用NuGet寥枝。

使用NuGet添加

配置完之后宪塔,我還發(fā)現(xiàn)微軟的NuGet竟然也可以添加boost。方法很簡單囊拜,在項(xiàng)目菜單中點(diǎn)擊管理NuGet包某筐,然后搜索boost,然后點(diǎn)擊右邊的下載按鈕即可冠跷。

NuGet安裝boost

由于boost是一個比較大的庫南誊,所以這個安裝過程可能需要多花費(fèi)幾分鐘。安裝完成后boost類庫會放到項(xiàng)目文件夾的package文件夾中蜜托。NuGet會自動幫我們做所有工作抄囚,我們接下來直接使用就可以了。

運(yùn)行boost程序

配置好之后橄务,就可以運(yùn)行boost程序了幔托。下面是一個簡單例子,使用了boost庫的一些高精度(最大可達(dá)100位)數(shù)學(xué)常量(值得吐槽的是C++標(biāo)準(zhǔn)庫居然沒有像樣的數(shù)學(xué)庫,能用的只有<cmath>重挑,而且甚至連PI常量都沒有)嗓化。

#include <boost/math/constants/constants.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <iostream>
#include <iomanip>

using namespace std;
using namespace boost::math::constants;
using namespace boost::multiprecision;

int main()
{
    cout << "圓周率是:" << setprecision(50) << pi<cpp_dec_float_50>() << endl;
    cout << "自然對數(shù)e是:" << setprecision(50) << e<cpp_dec_float_50>() << endl;
    cout << "根號2是:" << setprecision(50) << root_two<cpp_dec_float_50>() << endl;
    return 0;
}
// 圓周率π是:3.1415926535897932384626433832795028841971693993751
// 自然對數(shù)e是:2.7182818284590452353602874713526624977572470937
// 根號2是:1.4142135623730950488016887242096980785696718753769
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谬哀,隨后出現(xiàn)的幾起案子刺覆,更是在濱河造成了極大的恐慌,老刑警劉巖玻粪,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诬垂,居然都是意外死亡劲室,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門结窘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來很洋,“玉大人,你說我怎么就攤上這事隧枫『泶牛” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵官脓,是天一觀的道長协怒。 經(jīng)常有香客問我,道長卑笨,這世上最難降的妖魔是什么孕暇? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮赤兴,結(jié)果婚禮上妖滔,老公的妹妹穿的比我還像新娘。我一直安慰自己桶良,他們只是感情好座舍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著陨帆,像睡著了一般曲秉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疲牵,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天岸浑,我揣著相機(jī)與錄音,去河邊找鬼瑰步。 笑死矢洲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缩焦。 我是一名探鬼主播读虏,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼责静,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盖桥?” 一聲冷哼從身側(cè)響起灾螃,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揩徊,沒想到半個月后腰鬼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塑荒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年熄赡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齿税。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡彼硫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凌箕,到底是詐尸還是另有隱情拧篮,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布牵舱,位于F島的核電站串绩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芜壁。R本人自食惡果不足惜赏参,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沿盅。 院中可真熱鬧把篓,春花似錦、人聲如沸腰涧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窖铡。三九已至疗锐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間费彼,已是汗流浹背滑臊。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箍铲,地道東北人雇卷。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親关划。 傳聞我的和親對象是個殘疾皇子小染,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容