C++ Standard for Visual Studio 2015

C++ Standard for Visual Studio 2015

本文关键字:Studio 2015 Visual for Standard C++      更新时间:2023-10-16

我正在尝试安装MongoDB驱动程序,并正在阅读以下部分https://github.com/mongodb/mongo-cxx-driver/wiki/Download-and-Compile-the-Legacy-Driver

编译c++驱动程序时的SCons选项

根据环境选择合适的选项。请注意,某些标志在旧版本中可能不可用。

关于c++ 11/c++ 14的重要注意事项: boost库不能在不同版本的c++标准中提供稳定的ABI。因此,您必须确保您的应用程序、c++驱动程序和boost都使用相同的语言标准构建。特别是,如果您在启用c++ 11的情况下构建c++驱动程序,则还必须在启用c++ 11的情况下构建应用程序,并链接到c++ 11编译的boost。请注意,在大多数系统上,安装boost发行版的系统或包不是用c++ 11构建的,因此与c++ 11构建的旧驱动程序不兼容。

关于c++标准库的重要注意事项:就像c++ 11的问题一样,所有三个组件(应用程序、boost和c++驱动程序)都是基于同一个c++运行时库构建的,这一点同样至关重要。您不能将链接到libc++的组件与链接到libstdc++的组件混合使用。

重要26compat注意:如果您正在使用26compat分支,则只有在提供——full标志时才启用install-mongoclient目标。类似地,在构建26compat.*

时,必须使用——use-system-boost标志。

我的主要问题,我试图找出我的visual studio 2015在我构建解决方案时运行的标准。我试着四处阅读,但我认为我误解了c++ 11和c++ 14的概念。在微软页面上提到VS2015支持c++ 11、c++ 14和c++ 17。但是我怎么知道我现在用的是什么呢?我找不到明确配置的方法。我是c++新手,并且已经编写Java代码很多年了。c++让我很困惑,因为它有很多种类,比如编译器和标准。

请帮助我了解并找出我正在运行的标准。

文字大多是废话。

ABI是由编译器决定的,而不是标准。c++ 11没有ABI, GCC有一个,MSVC2015有一个。

" c++ 11 enabled"是GCC上的一个设置,它确实会影响它们的ABI。这同样适用于libc++和libstdc++,两者都不是c++ 11标准的一部分。此外,构建环境和操作系统("system Boost version")的混合主要是Linux的事情。

msvc++不是GCC,它不使用libstdc++,所以所有这些都不会影响您。Boost版本甚至不再是msvc++设置,对于最近的几个版本,库配置已经改为每个项目设置。(小贴士:创造激励。