vscode c++链接mongo数据库的操作随笔
1、需要先下载安装各种软件及依赖
1)c++链接mongo数据库需要涉及到这几个库,而且版本直接有范围
openssl
boost (安装https://blog.csdn.net/Aliven888/article/details/111153535)
cmake
mingw(如果想进行代码移植,或者用clion等编译器工作,可以用mingw编译器,就不用安装gcc和g++了)
libbson()
mongo-c(版本1.19.2)
mongocxx (版本3.6.6)
如果mongocxx安装指定c++17标准,就按照下面的命令cmake进行编译
然后用vs工具build sln的文件,再install即可
libbson cmake -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX="C:/Usr/local/cxx_17/libbson-1.9.5" -DCMAKE_PREFIX_PATH="C:/Usr/local/cxx_17/libbson-1.9.5" -DCMAKE_CXX_STANDARD=17 . mongo-c cmake -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX=C:/Usr/local/cxx_17/mongo-cpp-driver -DCMAKE_PREFIX_PATH=C:/Usr/local/cxx_17/mongo-cpp-driver -DCMAKE_CXX_STANDARD=17 . mongo-cxx cmake -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX="C:/Usr/local/cxx_17/mongo-cxx-driver" -DCMAKE_PREFIX_PATH="C:/Usr/local/cxx_17/mongo-cpp-driver" -DCMAKE_CXX_STANDARD=17 -DMONGOCXX_ENABLE_MONGOC=ON -DCMAKE_BUILD_TYPE=Release -DBSONCXX_POLY_USE_BOOST=1 -DBOOST_ROOT=C:/Usr/local/cxx_14/boost_1_82_0 .
2、vscode安装,用vscode的好处就是会省事情很多
1)下载安装vscode2022版本
2)也可以用vscode进行安装上面的各种类库
先进入到编译目录,例如mongoc目录下面
然后用cmake进行编译
cmake -G "Visual Studio 17 2022" "-DCMAKE_INSTALL_PREFIX=C:\mongo-cpp-driver" "-DCMAKE_PREFIX_PATH=C:\mongo-cpp-driver"
如果要指定后面用c++20标准或者c++14标准等这里可以指定,默认是c++14标准
cmake -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX="C:/Usr/local/cxx_20/mongo-cpp-driver" -DCMAKE_PREFIX_PATH="C:/Usr/local/cxx_20/mongo-cpp-driver" -DCMAKE_CXX_STANDARD=20
这里多说一句,我也尝试用了mingw,但是很容易各种报错,用mingw的好处是,可以平移迁移到linux上去
cmake -G "MinGW Makefiles" -DCMAKE_C_FLAGS="-D__USE_MINGW_ANSI_STDIO=1" .
下一步,则是在目录中找到一个文件,用vscode双击打开(一个sln结尾的文件)
下一步,右键生成,build和install即可
这里注意一下,因为默认安装是c++14版本,因为第二次安装我需要c++17版本,所以我在这里又指定了一下版本(不知道有没有用)
3、安装mongo数据库
4、vscode创建项目
5、当左右的基础工作都已经做好以后,开始进行项目配置
1)需要先把各个库的lib、include和bin命令都复制到当前路径下
2)然后进行配置,右键点击属性
3)配置完以后,重新扫描解决方案。
配置include
所有选项设置附加目录
链接器lib配置
6、代码试运行
// mongo_cpp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <mongocxx/client.hpp> #include <mongocxx/instance.hpp> #include <mongocxx/uri.hpp> #include <bsoncxx/builder/stream/document.hpp> #include <bsoncxx/json.hpp> //#include <boost/none.hpp> //#include <boost/optional/optional.hpp> //#include <boost/version.hpp> //#include <boost/utility/string_ref.hpp> int main() { mongocxx::instance inst{}; // 实例化 Mongocxx 库 mongocxx::uri uri("mongodb://localhost:27017"); // 连接 MongoDB URI mongocxx::client conn(uri); // 创建连接实例 auto collection = conn["testdb"]["testcollection"]; // 获取集合 // 插入文档 bsoncxx::builder::stream::document doc{}; doc << "name" << "Alice" << "age" << 28; collection.insert_one(doc.view()); // 查询文档 auto result = collection.find_one(bsoncxx::builder::stream::document{} << "name" << "Alice" << bsoncxx::builder::stream::finalize); if (result) { std::cout << bsoncxx::to_json(*result) << std::endl; } else { std::cout << "No matching documents found." << std::endl; } return 0; }
这里要注意一下,有时候找不到第三方库文件,无法引入成功,可能是include等目录下层级不对。因为引入的路径只到include,但是mongocxx下还有两个层级,而不是直接xx.hpp或cpp
7、如果用clion,使用cmake进行代码编译执行,会涉及到库的引用
cmake_minimum_required(VERSION 3.25) project(clion_mongo_cxx_v2) set(CMAKE_CXX_STANDARD 17) set(CMAKE_VERBOSE_MAKEFILE ON) # 编译文件 add_executable(clion_mongo_cxx_v2 report_algorithm_v1/main.cpp) # include 目录 # 使用target_include_directories来指定目标的include目录,而不是全局的include目录 # 使用${CMAKE_CURRENT_BINARY_DIR}来获取当前的二进制目录 target_include_directories(clion_mongo_cxx_v2 PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../venv/include) # lib 目录(链接器) # 不需要使用link_directories来指定lib目录,而是直接使用库文件的绝对或相对路径 # #target_link_libraries(目标(项目名) xxx.dll) # 使用target_link_libraries来链接库文件,而不是dll文件,dll文件会在运行时自动加载 target_link_libraries(clion_mongo_cxx_v2 PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../venv/lib/bsoncxx.lib ${CMAKE_CURRENT_BINARY_DIR}/../venv/lib/mongocxx.lib ${CMAKE_CURRENT_BINARY_DIR}/../venv/lib/bson-1.0.lib ${CMAKE_CURRENT_BINARY_DIR}/../venv/lib/mongoc-1.0.lib ${CMAKE_CURRENT_BINARY_DIR}/../venv/lib/zlib.lib )
8、c++ 17的安装过程
由于之前一直用c++14,但是用的很多代码都很不舒服,所以,这次想直接升级到c++17
之前有过尝试,但是失败了,后来拉通紫剑大神,在这里先感谢紫剑大神。
说明失败原因:版本不对
https://mongocxx.org/mongocxx-v3/installation/windows/
https://www.mongodb.com/docs/drivers/cxx/
具体可以看一下这两个链接。
我c++14版本使用的版本是
这次成功了,用的c++17版本是
成功了,cmake命令
cmake -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX=C:/Usr/local/cxx_17/mongo-c-driver -DCMAKE_PREFIX_PATH=C:/Usr/local/cxx_17/mongo-c-driver . cmake -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX="C:/Usr/local/cxx_17/mongo-cxx-driver" -DCMAKE_PREFIX_PATH="C:/Usr/local/cxx_17/mongo-c-driver" -DCMAKE_CXX_STANDARD=17 -DCMAKE_BUILD_TYPE=Release .
9、vscode 2022格式化代码插件是codemaid
出处:http://www.cnblogs.com/renfanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。