天天看點

boost windows vs編譯 出現fatal error C1001: 編譯器中發生内部錯誤提示

版權聲明:本文為部落客原創文章,轉載請注明源位址。 https://blog.csdn.net/10km/article/details/74190410

這幾天用VS2015編譯boost 1.62很正常,但是在用VS2013編譯boost1.62的時候,卻報錯了:

\boost/type_traits/common_types.h(42) : fatal error C1001: 編譯發生内部錯誤

根據網上找到了這篇文章《vs2013編譯boost1.60庫》搞明白是和VS2013對C++11 SFINAE特性支援不夠有關。(boost 1.60以上的版本用vs2013編譯都可能有這個問題) 

文章提供的解決辦法是更新到vs2013 update5即可(如果你的VS2013已經是update5是不會遇到這個問題的)。 

下載下傳位址 

http://download.microsoft.com/download/A/F/9/AF95E6F8-2E6E-49D0-A48A-8E918D7FD768/vs2013.5.iso vs正常安裝版本:VS2013 with update 5 (vs2013.5_ult_chs.iso)

https://msdn.itellyou.cn/ 這是另一個下載下傳位址選擇左側目錄開發人員工具找對應vs2013下載下傳

單獨的更新檔包連接配接失效了(本人找不到),隻能重裝vs2013with update 5

如果不想更新到 vs2013 update5 怎麼辦呢? 

也有辦法: 

利用 bjam 的 cxxflags property,增加 BOOST_NO_CXX11_VARIADIC_TEMPLATES宏定義告訴boost編譯器不支援c++11的可變參數模闆特性

.\bjam toolset=msvc-12.0 cxxflags=-DBOOST_NO_CXX11_VARIADIC_TEMPLATES

同樣的道理在VS2013 update5以下版本中使用boost庫,也會存在同樣的問題,編譯時也一樣要加上BOOST_NO_CXX11_VARIADIC_TEMPLATES 宏定義