为Visual Studio 2017构建boost 1.64

时间:2017-04-21 21:10:35

标签: c++ boost visual-studio-2017

我不能在VS2017中使用boost 1.64库。 在这里编译如下:

b2 toolset=msvc-14.1 --build-dir=.x86 --stagedir=stage_x86

在工作室里我遇到了这样的错误:

Error   unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)

我现在不知道该怎么办。 我试着编译64位并使用它。 - >有一个相应的错误。好。 我这样编译:

b2

完全相同的错误。

Error   unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)

所有项目链接器选项:

/OUT:"E:\Yandex.Disk\Projects\OS\Release\OS.exe" /MANIFEST /LTCG:incremental /NXCOMPAT /PDB:"E:\Yandex.Disk\Projects\OS\Release\OS.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG:FULL /MACHINE:X86 /OPT:REF /SAFESEH /INCREMENTAL:NO /PGD:"E:\Yandex.Disk\Projects\OS\Release\OS.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Release\OS.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"E:\boost_1_64_0\stage_x86\lib" /TLBID:1 

1 个答案:

答案 0 :(得分:6)

据我了解,微软为简化VS2017的部署而进行的更改已经引起了Boost Build如何检测构建Boost所需工具集的严重问题。我猜测这是阻止官方支持和/或造成问题的原因。截至2017年4月,很清楚在检测到VS2017时仍存在问题 - 例如https://github.com/boostorg/build/issues/157http://boost.2283326.n4.nabble.com/VS2017-release-vswhere-exe-td4693141.html#a4693313。微软知道并且似乎致力于解决这个问题。请参阅https://lists.boost.org/Archives/boost/2017/04/234552.php

在线信息表明使用Powershell存在工作轮次,但至少可以说是非常重要的。建议任何等待此事的人都按照讨论进行讨论,并强烈要求微软为Boost 1.65.0解决这个问题。我还没有亲自尝试这个(notNeeded & notEnoughTime),但我对一个解决方案非常感兴趣,如果看起来这个问题得到了妥善解决,我会回来更新。