环境:

操作系统: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. Ubuntu 下使用 putty并通过 ch340 usb 串口线进行调试

    安装putty sudo apt-get install putty -y 插入usb转串口线 由于linux下没有Windos类似的设备管理器,所以我们可以通过其他方法获取对应的串口号 可以在插拔之 ...

  2. 2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)

    题意: 给出一个字符串,至多将其划分为n部分,每一部分取出字典序最大的子串ci,最小化 最大的ci 先看一个简化版的问题: 给一个串s,再给一个s的子串t,问能否通过将串划分为k个部分,使t成为划分后 ...

  3. select监听udp消息

    服务端 #!/usr/bin/python2.6 # -*- coding:utf-8 -*- import json import socket import select def socketse ...

  4. mkdocs 生成帮助文档

    简介 MkDocs 可以同时编译多个markdown文件,形成书籍一样的文件.有多种主题供你选择,很适合项目使用. MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档.文档源文件在 M ...

  5. Js点击按钮下载文件到本地(兼容多浏览器)

    实现点击 用纯 js(非jquery)  下载文件到本地 自己尝试,加网上找了好久未果,如: window.open(url)   location.href=url   form表单提交   ifr ...

  6. idea JRebe插件激活方法

    具体方法请看创始人博客及github

  7. 【Unity&C#】lambda函数

    以下两段代码等价. 未使用lambda函数的代码: private Button PB; private void Start() { PB = GameObject.Find("PButt ...

  8. CPU缓存一致性协议—MESI详解

    MESI(也称伊利诺斯协议)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用在Intel奔腾系列的CPU中. MESI协议中的状态 CPU中每个缓存行使用的4种状态进行标记(使用额外的两位b ...

  9. netty长链接保存方案

    架构 client router server zk redis 对于router: 保存客户端和服务器对 redis clientid : serverip & port 对于server ...

  10. Service Mesh

    概念 A service mesh is a dedicated infrastructure layer for handling service-to-service communication. ...