ksl*_*ksl 12 c++ boost visual-studio-2013
有没有人使用Visual Studio 2013 Express成功构建Boost?
正如Boost网站所述,我对此是否可行感到困惑:
Visual Studio 2013/Visual C++ 12的已知错误.
Visual Studio 2013在发布过程中很晚才发布,因此存在一些未解决的问题.这些包括:
由于缺少include,序列化无法编译.
使用Boost.Container的allocator_traits中的has_member_function_callable_with会导致编译错误(#9332).
在诸如Unordered和MultiIndex之类的库中,使用初始化程序列表调用重载函数会导致编译错误,Visual C++声称重载是不明确的.这是一个Visual C++错误,目前尚不清楚是否有一个好的解决方法.这不会影响不使用初始化程序列表的代码,也不会使用不需要隐式转换的初始化程序列表(即容器的确切值类型的初始化程序列表).
线程:ex_scoped_thread编译失败(#9333).
但是,这张海报说可以在没有任何补丁的情况下使用VS 2013构建Boost 1.55.0.
我曾尝试使用VS 2013构建Boost,但我确实至少得到了序列化错误.
seh*_*ehe 18
我最近使用一个小补丁在MSVC12(VS2013)上构建了Boost:
主题:[PATCH]修复MSVC2013上的boost序列化构建
include fix(manual)
config_decltype_n3276_new.patch(来自https://svn.boost.org/trac/boost/ticket/9410)
正如您所看到的,它结合了https://svn.boost.org/trac/boost/ticket/9410中的补丁 和一些手动包含修复程序(它们是微不足道的).
这是有效的补丁:
diff --git a/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp b/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp
index 5a5c7b7..8da85ee 100644
--- a/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp
+++ b/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp
@@ -29,6 +29,7 @@
#include <boost/iterator/iterator_adaptor.hpp>
#include <boost/iterator/iterator_traits.hpp>
+#include <algorithm>
namespace boost {
namespace archive {
diff --git a/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp b/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp
index 695fa94..1c0f4f0 100644
--- a/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp
+++ b/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp
@@ -180,13 +180,13 @@
# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# define BOOST_NO_CXX11_DECLTYPE_N3276
#endif
// C++11 features not supported by any versions
#define BOOST_NO_CXX11_CHAR16_T
#define BOOST_NO_CXX11_CHAR32_T
#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE_N3276
#define BOOST_NO_CXX11_NOEXCEPT
#define BOOST_NO_CXX11_UNICODE_LITERALS
#define BOOST_NO_SFINAE_EXPR
diff --git a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp
index 216300c..1c0e6c7 100644
--- a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp
+++ b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp
@@ -32,6 +32,6 @@
int main( int, char *[] )
{
- return boost_no_decltype_n3276::test();
+ return boost_no_cxx11_decltype_n3276::test();
}
diff --git a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp
index 35427be..86e3664 100644
--- a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp
+++ b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp
@@ -27,11 +27,11 @@
#ifndef BOOST_NO_CXX11_DECLTYPE_N3276
#include "boost_no_decltype_n3276.ipp"
#else
-namespace boost_no_decltype_n3276 = empty_boost;
+namespace boost_no_cxx11_decltype_n3276 = empty_boost;
#endif
int main( int, char *[] )
{
- return boost_no_decltype_n3276::test();
+ return boost_no_cxx11_decltype_n3276::test();
}
Run Code Online (Sandbox Code Playgroud)
即使使用EPA Portable Archive实现,序列化也能很好地工作
免责声明这是'常规'Visual Studio.它可能适用于VS Express.(如果您有Windows SDK)
| 归档时间: |
|
| 查看次数: |
6317 次 |
| 最近记录: |