一、下载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的源码做相应的剖析。