天天看點

在Visual Sutdio 2017中使用boost庫

對C++有一定了解的同學一定聽說過boost庫,這是C++的一個著名類庫,在C++的地位感覺可以和Spring在Java中相比。boost向來有準标準庫之稱,很多新特性例如智能指針等都是先在boost中實作,後來被吸收到标準庫之中。而且boost實作了日志、算法、日期、地理、數學、線程協程等各種實用工具,是以如果要學習C++,boost是必須要學習的一個東西。

安裝boost

下載下傳boost

boost官網是

http://www.boost.org/

,目前最新的版本是1.65.1,可以到

這裡

下載下傳。下載下傳頁面裡有Unix和Windows的源碼,以及Windows版本的第三方二進制包。我們選擇下載下傳源碼。

下載下傳完成後解壓到一個目錄,例如我就放到了

D:\DevTools\boost_1_65_1

,目錄結構如下圖。

在Visual Sutdio 2017中使用boost庫

目錄結構

boost

目錄下是boost的頭檔案,

libs

下是boost的源代碼。其他檔案夾的内容是文檔和一些工具等等,就不介紹了。

添加環境變量

将你放置boost代碼的目錄設定為環境變量

BOOST_ROOT

,這個目錄将在後面用到。

生成boost指令行工具

首先確定你安裝了Visual Studio 2017,并安裝了 Visual Studio 2017 Developer Command Prompt工具。

打開VS 2017 Developer Command Prompt,切換到boost目錄,執行

bootstrap.bat

腳本,如果執行成功的話,會生成

b2.exe

等幾個工具,這樣生成工具的工作就完成了。

在VS中設定

在VS中建立一個C++項目,然後打開項目屬性頁,然後切換到VC++目錄,在包含目錄和庫目錄中分别添加

BOOST_ROOT

BOOST_ROOT\libs

兩個檔案夾。

在Visual Sutdio 2017中使用boost庫

項目屬性頁

在Visual Sutdio 2017中使用boost庫

包含目錄

在Visual Sutdio 2017中使用boost庫

庫目錄

配置完成後,就可以在項目中使用boost了。當然對于Visual Studio來說,還有更簡單的辦法,那就是使用NuGet。

使用NuGet添加

配置完之後,我還發現微軟的NuGet竟然也可以添加boost。方法很簡單,在項目菜單中點選管理NuGet包,然後搜尋

boost

,然後點選右邊的下載下傳按鈕即可。

在Visual Sutdio 2017中使用boost庫

NuGet安裝boost

由于boost是一個比較大的庫,是以這個安裝過程可能需要多花費幾分鐘。安裝完成後boost類庫會放到項目檔案夾的package檔案夾中。NuGet會自動幫我們配置好包含路徑等設定。我們接下來直接使用就可以了。

運作boost程式

配置好之後,就可以運作boost程式了。例如這裡我準備使用boost庫的一些高精度(最大可達100位)數學常量(值得吐槽的是C++标準庫居然沒有像樣的數學庫,能用的隻有

<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 << "自然對數e是:" << setprecision(50) << e<cpp_dec_float_50>() << endl;
    cout << "根号2是:" << setprecision(50) << root_two<cpp_dec_float_50>() << endl;
    return 0;
}
// 圓周率π是:3.1415926535897932384626433832795028841971693993751
// 自然對數e是:2.7182818284590452353602874713526624977572470937
// 根号2是:1.4142135623730950488016887242096980785696718753769