环境:

操作系统:Win7 x64

编译器:VS2017

需要Boost库支持,需要先将Boost库编译成为64位版本。

一、项目文件导入

1. 下载leveldb-windows,https://codeload.github.com/google/leveldb/zip/windows

2. 打开VS2017  File->New->Project From Existing Code

项目创建类型选择:Visual C++

3. Project file location: 选择leveldb-windows源码所在文件夹。D:\ProjecTrial\VC\leveldb-windows

Project name: 填写LevelDB。

4. Use Visula Studio -> Project tyep:

选择Windows application project。

5. 其他暂时不填写。以后可以在项目属性中再配置。

二、项目配置

项目建成后,Project->Property ,在x64位下属性,配置如下:

1. Configuration Properties->General->Configuration Type   配置成Static library (.lib)

2. C/C++ ->Preprocessor->Preprocessor Definitions

添加预处理器定义:LEVELDB_PLATFORM_WINDOWS;OS_WIN

3. C/C++ ->General-> Additional Include Directories  添加用到boost头文件目录和leveldb-windows 文件目录。

D:\ProgramFiles\boost\lib\include\boost-1_65_1

D:\ProjecTrial\VC\leveldb-windows

D:\ProjecTrial\VC\leveldb-windows\include

4. Linker->General->Additional library Directories  附加boost库

D:\ProgramFiles\boost\lib\lib

三、项目文件整理

1.手动从项目中排除所有的 *_test.cc 和*_bench.cc 文件;(在需要排除的文件右键Exclude From project)

排除其他平台的文件
     port/port_android.cc
     port/port_posix.cc
     util/env_posix.cc
     如果存在其他平台也排除

排除文件:

env_posix.cc

env_boost.cc

db_bench_sqlite3.cc

db_bench_tree_db.cc

c_test.c

2.  修改port/port.h文件,在第18行处新增加

#elif defined(LEVELDB_PLATFORM_WINDOWS) 
   #  include "port/port_win.h"

#if defined(LEVELDB_PLATFORM_POSIX)
# include "port/port_posix.h"
#elif defined(LEVELDB_PLATFORM_CHROMIUM)
# include "port/port_chromium.h"
#elif defined(LEVELDB_PLATFORM_ANDROID)
# include "port/port_android.h"
#elif defined(LEVELDB_PLATFORM_WINDOWS)
# include "port/port_win.h"
#endif

3. 修改db/c.cc文件,在第8行处,注释掉#include <unistd.h>

unistd.h 是 C 和 C++ 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称。是Unix Standard的缩写。
     windows下不支持.直接注释即可

4. 修改port/port_win.h文件,第34行处,注释掉#define snprintf _snprintf。因为VS2017中已经实现了snprintf的定义,所以不需要这个了。

四、编译生成LevelDB.lib。

VS2017编译LevelDB的更多相关文章

  1. windows 平台使用 VS2017 编译openssl源码

    windows 平台使用 VS2017 编译openssl源码 1)依赖安装 安装 perl 脚本解释器 下载 http://libevent.net/download 安装 nasm 汇编器 C:\ ...

  2. Windows下 VS2015编译levelDB(nmake)

    VS2015编译levelDB Leveldb是一个google实现的非常高效的kv数据库,非常适合嵌入到程序中.如果有简单的key-value数据库需求,而又想使用一个数据库服务的话,levelDB ...

  3. windows下编译leveldb

    前提条件,下载boost库并编译 boost库弄好后,就可以编译leveldb了 首先,下载leveldb-windows,这个github上有 一. 1文件->新建->从现有代码文件创建 ...

  4. windows 平台使用 VS2017 编译 libevent 源码

    一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...

  5. VS2017 编译 Visual Leak Detector + VLD 使用示例

    起因 一个Qt5+VS2017的工程,需要进行串口操作,在自动时发现一段时间软件崩溃了,没有保存log,在 debug 的时候发现每运行一次应用占据的内存就多一点,后来意识到是内存泄漏了.这个真是头疼 ...

  6. VS2017编译错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version

    VS2017编译错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll ve ...

  7. VS2017 编译 chromium和webrtc

    Chromium的编译和WebRTC的编译方式相同,WebRTC官网也是使用的Chromium的编译文档. 步骤一.跳 - 墙,先跳 - 墙这是第一步哟,chromium大概有10几个G,webrtc ...

  8. VS2017编译SFML SDK配制环境详解

    SFML和Visual Studio 介绍 如果您在Visual Studio IDE(Visual C ++编译器)中使用SFML,本教程是第一个应该阅读的教程.它将解释如何配置您的SFML项目. ...

  9. 使用VSCode和VS2017编译调试STM32程序

    近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台 ...

随机推荐

  1. css 绝对定位实现水平垂直居中

    负margin实现水平垂直居中 width: 500px; height: 500px; position: absolute; left: 50%; top :50%; margin-left: - ...

  2. 【1】【leetcode-99】 恢复二叉搜索树

    (没思路) 99. 恢复二叉搜索树 二叉搜索树中的两个节点被错误地交换. 请在不改变其结构的情况下,恢复这棵树. 示例 1: 输入: [1,3,null,null,2]   1   /  3   \ ...

  3. 解析ArcGis拓扑——根据拓扑错误记录提取shp文件、导出Excel表格

    在ArcGis拓扑检查的流程——以面重叠检查为例中讲述了如何在ArcGis进行拓扑检查与修改. 在实际操作中,有时我们还需要将ArcGis拓扑检查的结果制作成报告或者提取错误信息反馈作业方. 本文仍然 ...

  4. 057、macvlan 网络隔离和连通(2019-03-26 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7400580.html   在上一节中,两个host上四个容器的网络信息如下,然后进行网络连通性测试,可见通vlan的容器 ...

  5. window跟vue变量互相绑定

    js实现变量监听 //定义一个对象,挂载到window下,后续在任何模块中,给这个对象的show属性赋值,都将触发set对应的代码,我这么写主要是为了解决vue子组件向父组件传值的问题 window. ...

  6. ImageView获取宽高

    在Android里放置一个ImageView im1,宽和高都是200.以下代码都是直接在OnCreate里使用. 1.在Android OnCreate里如果直接使用iv.GetWidth()返回值 ...

  7. overflow:auto学习

    一直认为没认为这个属性没什么大的用处,最近在使用一次iscroll时一直浮动到顶部层上面找了半天,发现可以用这个属性解决. 1.功能1,清除浮动.设置overflow并不会在该元素上清除浮动,它将清除 ...

  8. jquery判断对象是否存在

    if($("#abc").length >0) { ... } if($("#abc").html() != "") { ... }

  9. [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用

    本文先从几何意义上对奇异值分解SVD进行简单介绍,然后分析了特征值分解与奇异值分解的区别与联系,最后用python实现将SVD应用于推荐系统. 1.SVD详解 SVD(singular value d ...

  10. windows server 2012 配置多用户ftp服务器配置注意点

    1.ftp根目录配置“FTP授权规则”为: 2.配置“FTP用户隔离”为: 3.配置“FTP目录浏览”为: 4.ftp虚拟目录“FTP授权规则”配置为: