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 参考網址:

    本帖下載内容已隐藏,请登入以查看隐藏内容!

    ~感谢各位耐心观看 ~


  • 註冊用戶

    學習了~ 感謝分享~


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待