2016-06-28 147 views
1

我试图安装MongoDB的驱动程序,并阅读本文以下部分 https://github.com/mongodb/mongo-cxx-driver/wiki/Download-and-Compile-the-Legacy-DriverC++标准的Visual Studio 2015年

编译C++驱动

为适合您的环境选择选项时,SCons的选项。请注意,某些标志可能不适用于旧版本。

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

关于C++标准库的重要注意事项:很像C++ 11的问题,这是一次关键的三个组成部分(您的应用程序,提升和C++驱动程序)对相同的C建成++运行时库。您不能将链接到libC++的组件与链接到libstdC++的组件链接起来。

重要26compat注意:如果您使用的是26compat分支,则只有在提供了--full标志时才会启用install-mongoclient目标。同样的,你必须在构建26compat时使用--use系统升压标志。*

我的主要问题,我试图找出什么标准我的Visual Studio 2015年时,我建立的解决方案上运行。我曾尝试过四处阅读,但我想我误解了C++ 11和C++ 14的概念。在微软的网页上,它提到VS2015支持C++ 11,C++ 14和C++ 17。但是我怎么知道我现在用的是什么?我找不到明确配置的方法。我是C++的新手,并且一直在编写Java多年。 C++令我感到困惑,因为编译器和标准有很多种。请帮助我理解并可能找出我正在运行的标准。

+5

我会感谢你的构建应用程序,驱动程序和Boost所有VS2k15会自动确保它们互相兼容。 – paxdiablo

+0

嗨,但我可以选择编译哪个分支之前,我需要首先确定我的C++标准? – Zanko

+0

Visual Studio 2015大多数是C++ 11/14,与已经存在的一些C++ 17功能兼容。 “主要”是指:主要是。还有些东西没有正确完成。你可以随时用vs2015做实验问题。但是你可以认为你需要编译的大部分内容都会被编译。 – Gibet

回答

2

文本大多是废话。

ABI的是由编译器,而不是标准规定。 C++ 11没有ABI,有一个用于GCC,另一个用于MSVC2015。

“C++ 11启用”是在海湾合作委员会的设置,并且它会影响他们的ABI。这同样适用于libC++和libstdC++,它们都不是C++ 11标准的一部分。另外,构建环境和操作系统的混合(“系统升级版本”)主要是Linux操作系统。

MSVC++是不是GCC,并且它不使用的libstdC++,所以这一切并不影响你。 Boost版本甚至不再是MSVC++设置,因为最后几个版本的库配置已经是每个项目的设置。 (提示:创建一个Boost.vsprops文件)