首页 > 解决方案 > mongo-cxx 驱动程序找不到 unique_ptr 的 polyfill

问题描述

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

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

这是我所做的:

构建 mongo-c-driver

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

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 构建设置

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

构建 mongo-cxx-driver

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

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

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

在此处输入图像描述

注意:

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

谢谢你!

标签: c++mongodbcmakemongo-cxx-drivermongo-c-driver

解决方案


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

对于使用 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”标志,它编译得很好!


推荐阅读