Mongo C Driver 編譯
-
MongoDB C Driver 编译说明
ㄧ.环境:
1. Winodws 7下 VS2013 (要求Windows Vista 以上 and Visual Studio 2010 以上)
2. Cmake 3.6.1
3. 下载mongo-c-driver 源代码 (https://github.com/mongodb/mongo-c-driver/releases)
版本mongo-c-driver 1.6.0
4. 下载libbson源代码 (在mongo-c-driver 1.6.0/src/libbson未含档案)
(https://github.com/mongodb/libbson/tree/0850239cc06feb3c13320db650798211b3c77c35)
PS: Python + scons 也可编译,这里介绍Cmake+VS2013
二.编译步骤:
(1) libbson:
1.使用Cmake 生成build 檔
输入来源位置(Source code) 及生成位置(build the binaries)后点击Configure
开始Compiler 结束后显示红色再调整参数位置再点击Generate
需调整参数
a.将ENABLE_TESTS 不勾选则不生成
b.CMAKE_INSTALL_PREFIX 修改为C:/mongo-c-driver (你要安装的位置)
可打开需将test 工程卸除及CMakeLists.txt 中 test 工程移除再保存
2.指令执行:
cd C:\Program Files (x86)\MSBuild\12.0\Bin
msbuild C:\mongo-c-driver\buildbson\ALL_BUILD.vcxproj 编译
msbuild C:\mongo-c-driver\buildbson\INSTALL.vcxproj 安装
(2) mongoc :
1. 使用Cmake 生成build 檔
需调整参数
a.
BSON: C:\mongo-c-driver\
BSON_INCLUDE_DIR: C:\mongo-c-driver\include\
DBSON_ROOT_DIR : C:\mongo-c-driver\
b. 将ENABLE_TESTS 、ENABLE_EXAMPLE 不勾选则不生成
c. CMAKE_INSTALL_PREFIX 修改为C:/mongo-c-driver (你要安装的位置)
打开libmongoc.sln 卸除项目example所有工程,test 所有工程
执行前需将CMakeLists.txt 中example所有工程,test 所有工程移除再保存
2. 指令执行:
msbuild C:\mongo-c-driver\buildmongoc\ALL_BUILD.vcxproj 编译
msbuild C:\mongo-c-driver\buildmongoc\INSTALL.vcxproj 安装
PS:
1.若未勾选ENABLE_TESTS 、ENABLE_EXAMPLE 则不生成,不需卸除
2.执行编译,若报错是路径未设置好
(ex:lib未加载则在属性 链接器-输入上加入libbson lib的路径)
三.驱动配置:
VS环境配置:
(1)C/C++预处理器
设定四个参数
MONGO_HAVE_STDINT, MONGO_HAVE_UNISTD
MONGO_USE_INT64,MONGO_USE_LONG_LONG_INT
(2) VC++目录添加
C:\mongo-c-driver\include\libbson-1.0
C:\mongo-c-driver\include\libmongoc-1.0
(3) 链接器-输入添加
C:\mongo-c-driver\lib\mongoc-1.0.lib
C:\mongo-c-driver\lib\bson-1.0.lib
C:\mongo-c-driver\lib\bson-static-1.0.lib
PS: 将libbson-1.0.dll 及libmongoc-1.0.dll 复制到工作目录下
四.测试MongoDB连线:
1.先将MonogoDB server 开启 -> 執行mongod -> 執行 mongo (默认本地db位址)
C:\>cd C:\Program Files\MongoDB\Server\3.2\bin
C:\Program Files\MongoDB\Server\3.2\bin> mongod
C:\Program Files\MongoDB\Server\3.2\bin> mongo
先秀出目前DB
> show dbs local 0.000GB obs 0.000GB post 0.000GB setdata 0.000GB
2.程序代码范例
#include <mongoc.h> #include <stdio.h> #include <stdlib.h> #include <bson.h> #include <bcon.h> #include <time.h> int main(int argc, char *argv[]) { mongoc_client_t *client; mongoc_collection_t *collection; bson_error_t error; bson_t *doc; /*文档名称doc*/ const char *uristr = "mongodb://localhost:27017"; /*mongodb地址*/ const char *collection_name = "test"; /*集合名称test*/ time_t now = time(0); char timebuf[256] = {}; struct tm cur_time; const char *optime; cur_time = *localtime(&now);/*获取本地当前时间*/ strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", &cur_time);/*格式化时间*/ optime = timebuf; mongoc_init();/*初始化*/ if (argc > 1) { uristr = argv[1]; } if (argc > 2) { collection_name = argv[2]; } client = mongoc_client_new(uristr); /*连线到db */ if (!client) { fprintf(stderr, "Failed to parse URI.\n"); return EXIT_FAILURE; } mongoc_client_set_error_api(client, 2); collection = mongoc_client_get_collection(client, "test", collection_name);/*获取集合*/ doc = bson_new();/*創建BSON*/ BSON_APPEND_UTF8(doc, "Titile", "Hello world "); BSON_APPEND_UTF8(doc, "Nowtime", optime); /*插入集合*/ if (!mongoc_collection_insert(collection, MONGOC_INSERT_NONE, doc, NULL, &error)) { fprintf(stderr, "%s\n", error.message); } /*释放资源*/ bson_destroy(doc); mongoc_collection_destroy(collection); mongoc_client_destroy(client); mongoc_cleanup(); system("pause"); return EXIT_SUCCESS; }
获取数据库名: mongoc_client_get_database (client, "db_name");
获取集合名 : mongoc_client_get_collection (client, "db_name", "coll_name");
插入:mongoc_collection_insert (collection, MONGOC_INSERT_NONE, insert, NULL, &error)
执行完成:
完成后到MonogoDB查看是否新增成功
新增成功:
> show dbs local 0.000GB obs 0.000GB post 0.000GB setdata 0.000GB test 0.000GB
切换DB 到test 显示集合
> use test switched to db test > show collections mycal mycol post test <= 新增成功test 集合 > db.test.find() { "_id" : ObjectId("58c3ff4def6c6f1e88006cd2"), "Titile" : "Hello world ", "Nowtime" : "2017-03-11 21:44:45" }
PS:
(1)OpenSSL 尚未设定需再取得OpenSSL库
编译OpenSLL 参考網址:
本帖下載内容已隐藏,请登入以查看隐藏内容!~感谢各位耐心观看 ~
-
學習了~ 感謝分享~