我正在尝试安装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问题非常相似,同样重要的是,必须针对同一C ++运行时库构建所有三个组件(您的应用程序,boost和C ++驱动程序)。您不能将已经链接到libc ++的组件与已经链接到libstdc ++的组件混在一起。
重要的26compat注意:如果使用的是26compat分支,则仅在提供--full标志时才启用install-mongoclient目标。同样,构建26compat时必须使用--use-system-boost标志。*
我的主要问题是,在尝试构建解决方案时,我试图找出Visual Studio 2015运行的标准。我尝试阅读一下,但我认为我误解了C ++ 11和C ++ 14的概念。在Microsoft页面上,它提到VS2015支持C ++ 11,C ++ 14和C ++ 17。但是我怎么知道我现在在用什么呢?我找不到明确配置的方法。我是C ++的新手,并且从事Java编程已有多年了。C ++使我感到困惑,因为编译器和标准之类的种类繁多。请帮助我了解并可能找出我运行的标准。
文本主要是胡说八道。
ABI是由编译器而非标准决定的。C ++ 11没有ABI,GCC有一个ABI,而MSVC2015有一个。
“已启用C ++ 11”是GCC上的设置,它确实会影响其ABI。libc ++和libstdc ++的情况相同,两者都不是C ++ 11标准的一部分。而且,构建环境和OS(“系统Boost版本”)的混合大部分是Linux。
MSVC ++不是GCC,也不使用libstdc ++,因此这一切都不会影响您。Boost版本甚至不再是MSVC ++设置,因为最近几个版本的库配置已改为按项目设置。(提示:为此创建一个Boost.vsprops文件)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句