繁体   English   中英

mongo-cxx 驱动程序找不到 unique_ptr 的 polyfill

[英]mongo-cxx driver cannot find polyfill for unique_ptr

我正在尝试在 Windows 上构建mongo-cxx-driver 我正在按照说明进行操作,但出现错误:

C1189   #error:  "Cannot find a valid polyfill for make_unique"

这是我所做的:

构建 mongo-c-driver

我使用指定的最低版本 (1.15) 克隆了mongo-c-driver

git clone https://github.com/mongodb/mongo-c-driver --branch r1.15

使用 CMake-Gui(我使用的是 3.18.2),我使用 Visual Studio 16 2019 Generator 生成了 .proj 文件。 我使用了默认设置:

mongo-c-driver 的 Cmake-Gui 构建设置

这构建成功,我可以在C:\\Program Files (x86)\\mongo-c-driver找到相应的 .dll 和 .lib 文件。

构建 mongo-cxx-driver

我使用我想要的版本(与mongo-c-driver的上述版本兼容)克隆了该项目:

git clone https://github.com/mongodb/mongo-cxx-driver --branch releases/v3.5

我使用 Cmake-Gui 来配置 CMake 参数,配置到我安装mongo-c的路径:

在此处输入图片说明

值得注意的是:

  • 我没有填写bson-1.0_DIRmongoc-1.0_DIR因为我不知道他们在找什么。
  • 我设置BSONCXX_POLY_USE_STD=1因为我使用的是 C++17 并且不想使用std::experimental或 Boost。

我尝试在 Visual Studio 中编译它,并得到上述关于找不到make_unique的有效make_unique 我哪里做错了?

谢谢你!

答案似乎在安装指南中,我错过了一步:

为了使用 Visual Studio 2017(没有 C++17 polyfill)构建,需要配置一个额外的选项,/Zc:__cplusplus 来选择正确的 __cplusplus 定义(这里描述的问题):

'C:\\Program Files (x86)\\CMake\\bin\\cmake.exe' ..
-G "Visual Studio 15 2017 Win64"
-DCMAKE_CXX_STANDARD=17
-DCMAKE_CXX_FLAGS="/Zc:__cplusplus"
-DCMAKE_PREFIX_PATH=C:\\mongo-c-driver
-DCMAKE_INSTALL_PREFIX=C:\\mongo-cxx-driver \\

我根据需要添加了“/Zc:__cplusplus”标志,它编译得很好!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM