我是leveldb的新手。我尝试编译用于在Visual Studio 2015中创建leveldb的c ++代码。我尝试使用两种不同的代码生成选项编译代码。
要更改属性: 项目 - >配置属性 - > C / C ++ - >代码生成
这是我的整个代码
#include <iostream>
#include "leveldb/db.h"
#include <memory>
using namespace std;
int main(int argc, char** argv)
{
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
//options.error_if_exists = true;
/*This is the line where it crashes*/
leveldb::Status status = leveldb::DB::Open(options, "E:\\testdb\\level2", &db);
/*This is the line where it crashes*/
if (!status.ok())
{
cerr << status.ToString() << endl;
}
else
{
cout << "Created successfully" << endl;
}
for (int i = 0; i < 1000000; i++)
{
status = db->Put(leveldb::WriteOptions(), to_string(i), to_string(i));
}
delete db;
return 0;
}
以下是我的两个案例的结果
案例:1
运行时库 - &gt;多线程DLL(/ MD)
结果:
代码编译成功,我可以看到我的代码成功执行并创建了数据库
案例:2
运行时库 - &gt;多线程(/ MT)
结果:
代码编译成功。但是只要它试图打开数据库,exe就会崩溃
下面是我的exe崩溃的行
leveldb ::状态status = leveldb :: DB :: Open(选项,“E:\\ testdb \\ level2”,&amp; db);