c++ - 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 文件。我使用了默认设置:
这样构建成功,我可以在 .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
:
注意:
- 我没有填写,
bson-1.0_DIR
或者mongoc-1.0_DIR
因为我不知道他们在寻找什么。 - 我设置
BSONCXX_POLY_USE_STD=1
是因为我使用的是 C++17 并且不想使用std::experimental
或 Boost。
我尝试在 Visual Studio 中编译它,并得到上述关于找不到有效 polyfill 的错误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”标志,它编译得很好!
推荐阅读
- java - 由于版本不兼容,STS 不会响应
- sql - SQL 通过同一张表的其他值更新值
- twitter - 设置在某个 Twitter 用户使用他们以前未使用过的主题标签时接收电子邮件
- c++ - C++ 是否有允许从派生类引用基类型的关键字?
- java - 如何在 JPA/Hibernate 中保持唯一的关系被持久化/合并到数据库
- javascript - 在 JavaScript 中,您可以使用字符串和变量创建对导入的引用吗
- sql - 如何在pl/sql中的字符串前面放置特定数量的字符?
- java - 如何将@Value 注入二传手?
- apache - 为流媒体设置 Mp3 文件的授权
- python - python 403 未授权访问此资源/api