用Qt Creator 对 leveldb 进行简单的读写

时间:2023-03-09 20:38:50
用Qt Creator 对 leveldb 进行简单的读写
#include <iostream>
#include <string>
#include <leveldb/db.h>
#include <boost/lexical_cast.hpp> using namespace std; int main(int argc, char *const *argv)
{ try
{
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "./db", &db); cout << status.ok() << endl; for(int i=; i<; i++)
{
string key = boost::lexical_cast<string>(i);
string value = boost::lexical_cast<string>(i*i);
db->Put(leveldb::WriteOptions(), key, value);
} string key = "";
string value; db->Get(leveldb::ReadOptions(), key, &value); cout << value << endl;
cout << * << endl; delete db;
}
catch(exception &e)
{
cout << e.what() << endl;
} return ;
}

代码没什么特色,因为Qt Creator在编译的时候会加上 -mmacosx-version-min=10.6 这样的参数,所以我们在编译libleveldb.a的时候也需要加上这个参数,否则在Qt下就会报错。

.pro文件需要加上这两行:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt SOURCES += main.cpp INCLUDEPATH += /opt/local/include
LIBS += -L/opt/local/lib/ -lleveldb

如果是用cmake,那就没有 -mmacosx-version-min=10.6 这样的参数的问题了,只需要这样:

project(hellodb)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST}) INCLUDE_DIRECTORIES(/opt/local/include)
TARGET_LINK_LIBRARIES (hellodb /opt/local/lib/libleveldb.a)