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

mongo-cxx driver cannot find polyfill for unique_ptr

我正在尝试在 Windows 上构建 mongo-cxx-driver;我正在关注 instructions,但出现错误:

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 文件。我使用了默认设置:

编译成功,我可以在C:\Program Files (x86)\mongo-c-driver.

中找到对应的.dll和.lib文件

建筑 mongo-cxx-驱动程序

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

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

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

注意事项:

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

谢谢!

答案好像在installation guide,我漏了一步:

For building with Visual Studio 2017 (without a C++17 polyfill), it is necessary to configure with an additional option, /Zc:__cplusplus to opt into the correct definition of __cplusplus (problem described here):

'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”标志并且编译正常!