boost::future 不编译
boost::future does not compile
我在尝试编译使用 boost 库的项目时遇到问题。
我得到的错误是:
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(156): error C3646: 'policy_': unknown override specifier
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(156): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(396): error C2061: syntax error: identifier 'wait_until'
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(414): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(421): error C2988: unrecognizable template declaration/definition
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(421): error C2059: syntax error: 'this'
以及关于 future.hpp 的更多编译错误......
我尝试重新安装 Windows SDK 和 Visual Studio,但在这两种情况下都没有帮助。
我认为可能是错误的包含路径,所以我检查了项目属性中的宏。我发现在 'Include Directories' 我有 $(VC_IncludePath);$(WindowsSDK_IncludePath);
评估为:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt
C:\Program Files (x86)\Windows Kits\Include.0.10240.0\um
C:\Program Files (x86)\Windows Kits\Include.0.10240.0\shared
C:\Program Files (x86)\Windows Kits\Include.0.10240.0\winrt
C:\Program Files (x86)\Windows Kits\NETFXSDK.6\Include\um
在上面的第一个路径中我有文件 'future'...
我正在使用:
- Visual studio 15
- Windows10个SDK版本10.0.10240.0
- boost 库版本 1.60.0.0
应该注意的是,同一个项目正在为我的队友编译,所以它可能与设置或包含有关,但与代码本身无关。
所以问题是我电脑上的boost包损坏了。
在项目上重新安装它(通过视觉)没有帮助,因为它只是从我计算机上的缓存中获取它 (C:\Users\ofir\.nuget\packages\boost) 而不是真的从网上下载。
我的问题是缓存已损坏 - 由于某种原因文件未正确下载。
解决方案是更新我电脑上的软件包:
为此,我删除了文件夹 C:\Users\ofir\.nuget\packages\boost\1.60.0 并重建了我的项目 - 它重新下载了包。
您还可以使用命令 -
https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages
我在尝试编译使用 boost 库的项目时遇到问题。
我得到的错误是:
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(156): error C3646: 'policy_': unknown override specifier
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(156): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(396): error C2061: syntax error: identifier 'wait_until'
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(414): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(421): error C2988: unrecognizable template declaration/definition
1>f:\server\packages\boost.1.60.0.0\lib\native\include\boost\thread\future.hpp(421): error C2059: syntax error: 'this'
以及关于 future.hpp 的更多编译错误......
我尝试重新安装 Windows SDK 和 Visual Studio,但在这两种情况下都没有帮助。
我认为可能是错误的包含路径,所以我检查了项目属性中的宏。我发现在 'Include Directories' 我有 $(VC_IncludePath);$(WindowsSDK_IncludePath);
评估为:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt C:\Program Files (x86)\Windows Kits\Include.0.10240.0\um C:\Program Files (x86)\Windows Kits\Include.0.10240.0\shared C:\Program Files (x86)\Windows Kits\Include.0.10240.0\winrt C:\Program Files (x86)\Windows Kits\NETFXSDK.6\Include\um
在上面的第一个路径中我有文件 'future'...
我正在使用:
- Visual studio 15
- Windows10个SDK版本10.0.10240.0
- boost 库版本 1.60.0.0
应该注意的是,同一个项目正在为我的队友编译,所以它可能与设置或包含有关,但与代码本身无关。
所以问题是我电脑上的boost包损坏了。
在项目上重新安装它(通过视觉)没有帮助,因为它只是从我计算机上的缓存中获取它 (C:\Users\ofir\.nuget\packages\boost) 而不是真的从网上下载。 我的问题是缓存已损坏 - 由于某种原因文件未正确下载。
解决方案是更新我电脑上的软件包:
为此,我删除了文件夹 C:\Users\ofir\.nuget\packages\boost\1.60.0 并重建了我的项目 - 它重新下载了包。
您还可以使用命令 - https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages