leveldb源码分析一一visual studio创建工程加载google leveldb

一、下载leveldb源码

从github上下载windows版本的leveldb源码:https://github.com/google/leveldb/tree/windows

下载完后,解压目录如下所示:

二、安装boost库

由于leveldb使用了boost库的依赖,所以需要下载相应的boost库,我下载的是最新的1.66版本,下载链接如下:

https://sourceforge.net/projects/boost/files/boost-binaries/

点击电脑左下角菜单,选择vs命令提示

然后输入如下命令:

首先cd到boost解压目录下,然后运行bootstrap.bat,建立编译工具bjam.exe

然后,我们输入如下指令完成boost库的编译,如下是在visual studio 2010下编译win32版本的指令:

bjam.exe --toolset=msvc-10.0 --stagedir="D:\boost\boost_1_66_0\vc10" architecture=x86 address-model=32 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization

然后我们在D:\boost\boost_1_66_0\vc10目录下就看到生成的lib库了

三、导入文件

打开visual studio 2010,选择新建->从现有代码文件创建新项目

在设置"调试"配置的设置中预处理器定义 填写LEVELDB_PLATFORM_WINDOWS;OS_WIN

导入完成后,生成LevelDB工程,如下所示:

四、项目属性配置

1.添加boost库目录和leveldb目录文件,如下所示:

2.添加boost生成的lib库

3.从项目中排除如下文件:

  • port/port_android.cc
  • port/port_posix.cc
  • util/env_posix.cc
  • doc/db_bench_tree_db.cc
  • doc/db_bench_sqlite3.cc
  • db/c_test.c
  • *_test.cc
  • *_bench.c

4.修改port.h文件

5.修改c.cc文件

6.添加测试代码:

#include <iostream>
#include <string>
#include <assert.h>    
#include "leveldb/db.h" 
#include "leveldb/c.h"
 
using namespace std;
 
int main(void) 
{       
    leveldb::DB      *db;    
    leveldb::Options  options;    
    options.create_if_missing = true;    
 
    // open
    leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb", &db);    
    assert(status.ok());    
 
    string key = "name";    
    string value = "chenqi";    
 
    // write
    status = db->Put(leveldb::WriteOptions(), key, value);    
    assert(status.ok());    
 
    // read
    status = db->Get(leveldb::ReadOptions(), key, &value);    
    assert(status.ok());    
 
    cout<<value<<endl;    
 
    // delete
    status = db->Delete(leveldb::WriteOptions(), key);    
    assert(status.ok());        
 
    status = db->Get(leveldb::ReadOptions(),key, &value);    
    if(!status.ok()) {
        cerr<<key<<"    "<<status.ToString()<<endl;
    } else {
        cout<<key<<"==="<<value<<endl; 
    }
 
    // close
    delete db;   
 
    return 0;
}

运行如下所示:

至此,利用visual studio 2010编译leveldb并测试的程序就写完了,接下来我们可以在vs上对leveldb的源码做相应的剖析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值