1. 程式人生 > >VS2017編譯boost庫

VS2017編譯boost庫

第一步:到官網http://www.boost.org/下載boost庫,最好下載最新版

第二步:解壓到D盤(其他盤也可),這裡以boost1.63版為例

第三步:開啟VS2017開發人員命令提示,英文名稱Developer Command Prompt VS for 2017

第四步:輸入命令d:  ,進入D盤,再輸入命令cd D:\boost_1_63_0,進入D:\boost_1_63_0後,輸入命令bootstrap,等待1分鐘左右會在D:\boost_1_63_0

生成幾個檔案,最小化開發人員命令提示

第五步:在目錄D:\boost_1_63_0下有一個專案配置檔案project-config.jam,用記事本或其他文字編輯工具開啟,做如下修改:

import option ;

using msvc : 14.0 : "D:\Visual Studio 2017\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\cl.exe";

option.set keep-going : false ;

其中第二行的目錄是你VS2017的安裝目錄

第六步:最大化開發人員命令提示,輸入命令

b2 install --toolset=msvc-14.0 --prefix="c:\boost" --build-type=complete --without-python--without-mpi
上面的"c:\boost"是你生成的lib庫所在地,可以保持預設


這個命令會在你的C盤裡生成一個編譯好的boost庫,編譯時間因電腦效能不同而不同,大概1~2個小時左右

下面進行配置vs2017:

第一步、新建專案

Visual C++-------win32控制檯


預設選擇完成。

第二步、複製程式碼

程式碼如下:

#include <boost/lexical_cast.hpp>   
#include <iostream>


using namespace std;
int main()
{
    using boost::lexical_cast;
    int a = lexical_cast<int>("123");
    double b = lexical_cast<double>("123.0123456789");
    string s0 = lexical_cast<string>(a);
    string s1 = lexical_cast<string>(b);
    cout << "number: " << a << "  " << b << endl;
    cout << "string: " << s0 << "  " << s1 << endl;
    int c = 0;
    try 
    {
        c = lexical_cast<int>("abcd");
    }
    catch (boost::bad_lexical_cast & e)
    {
        cout << e.what() << endl;
    }
}

第三步、修改除錯平臺

因為編譯的靜態庫和動態連結是64位,選擇64位平臺


第四步、設定編譯環境及連結

專案------選項----C/C++附加包含目錄----連結器附加庫目錄


此項為標頭檔案目錄,要保證能找到標頭檔案,即C:\boost\boost_1_63_0中含有boost,而boost中為標頭檔案。

此項為標頭檔案目錄,要保證能找到標頭檔案,即C:\boost\boost_1_63_0中含有boost,而boost資料夾中為標頭檔案。

點選連結器,附加庫目錄為編譯時候產生的包含靜態庫或動態連結的資料夾,本文設定為編譯時候設定的C:\boost\bin1.63.0\VC14.0\lib。

如下圖所示:

將C:\boost\bin1.63.0\VC14.0\lib 貼上進去,確定。

Note:如果編譯時候找不到,則重新設定本步驟。

第四步、解決編譯時候產生的打不開檔案問題。

便有錯誤如下:
  1. (Win32): 已載入“C:\Windows\System32\ntdll.dll”。無法查詢或開啟 PDB 檔案。  

解決措施:

點選除錯-----選項-----右邊勾上“啟用源伺服器支援”----左邊點“符號”—右邊勾選“微軟符號伺服器”。


右邊勾上“啟用源伺服器支援”。

左邊點“符號”—右邊勾選“微軟符號伺服器”。

第五步、除錯執行

使用Ctrl+f5

結果如下圖所示,則配置完成。