前提条件,下载boost库并编译

boost库弄好后,就可以编译leveldb了

首先,下载leveldb-windows,这个github上有

一。

1文件-》新建-》从现有代码文件创建新项目

打开 从现有代码文件创建新项目 向导窗口

2要创建什么类型的项目? 选择Visual C++

3项目文件位置 选择源码所在位置leveldb-windows文件夹所在位置

这里源码文件在E:\0AA--master\leveldb-master目录中,所以使用的是E:\0AA--master\leveldb-maste

4项目名称填写 LevelDB

5使用Visual Studio 项目类型选择 静态库(LIB)项目

如果静态库(LIB)项目没有导入成功,可以先选择Windows应用程序项目
6 在设置"调试"配置的设置 中 
预处理器定义 填写LEVELDB_PLATFORM_WINDOWS;OS_WIN

包括搜索路径 填写E:\LIB\leveldb-windows;E:\LIB\leveldb-windows\include

7完成导入

二。检查配置部分

  Boost库在E:\LIB\boost64目录下,在项目的属性页中 配置成64位平台

把需要包含的leveldb,boost的头文件包含进去,boost的lib也包含进去

  

(手动从项目中排除所有的 *_test.cc 和*_bench.cc 文件,从项目里面移除所有 xxx_text.c c xxxx_bench.cc 测试和性能测试相关源文件。本文编译时没做括号中这部分)

排除其他平台的文件
port/port_android.cc
port/port_posix.cc

util/env_posix.cc

三。修改源码

1.db\c.cc文件中头文件unistd.h
unistd.h 是 C 和 C++ 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称。是Unix Standard的缩写。

windows下不支持.直接注释即可

2.port\port.h文件中
注明使用的是windows系统
在预编译中增加
#elif defined(LEVELDB_PLATFORM_WINDOWS)

#include "port/port_win.h"

四。编译过程中遇到的问题:

1.无法打开包括文件:“sys/mman.h”: No such file ordirectory

第一次编译出现这个问题,第二次重新导入工程重做的时候没有出现这个问题。可能是因为第一次没有排除port/port_posix.cc文件。

2.无法打开包括文件:“pthread.h”: No such file or directory

下载最新版本pthreads-w32-2-9-1,下载后解压,可以看到共有三个文件夹,用到的主要是“Pre-built.2”这个文件夹下的三个文件夹,分别是动态链接库、头文件、静态链接库;然后配置头文件及静态链接库,配置动态链接库。

https://blog.csdn.net/qianchenglenger/article/details/16907821

3.无法打开包括文件:“sqlite3.h”: No such file or directory

下载sqlite3.h,并在配置中包含进去

https://www.cnblogs.com/superbi/p/4980127.html

4.无法打开包括文件:“kcpolydb.h”: No such file or directory

http://fallabs.com/kyotocabinet/winpkg/

下载kcpolydb.h,并在配置时包含进去

5.无法打开包括文件:“endian.h”: Nosuch file or directory

endian.h是Linux下编译涉及的头文件,在Windows中编译,不需要此头文件。

6.VS2012:"snprintf"找不到标识符

https://blog.csdn.net/shhdgl/article/details/41900045

snprintf()函数的格式跟printf差不多一样,是在c里面用的函数,包含在 #include <stdio.h>头文件中。

但snprintf()函数并不是标准c/c++中规定的函数,所以在许多编译器中,厂商提供了其相应的实现的版本。在gcc中,该函数名称就snprintf(),而在VS中称为_snprintf。 所以在需要使用snprintf()时改成_snprintf就可以了,或者在预编译处加入:

#if _MSC_VER

#define snprintf _snprintf

#endif

7. dirent.h可以在windows下用吗

下载dirent-master,把头文件包括进去

然后就可以编译生成LevelDB.lib

在使用的时候,除了leveldb的头和静态库,还需要下面几个boost的库

libboost_date_time-vc120-mt-gd-x64-1_67.lib
libboost_filesystem-vc120-mt-gd-x64-1_67.lib
libboost_system-vc120-mt-gd-x64-1_67.lib
libboost_thread-vc120-mt-gd-x64-1_67.lib
libboost_chrono-vc120-mt-gd-x64-1_67.lib

windows下编译leveldb的更多相关文章

  1. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  2. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  3. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  4. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  5. 在Windows下编译OpenSSL(VS2005和VC6)

    需要说明的是请一定安装openssl-0.9.8a .  openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...

  6. windows下编译java源文件的编码错误

    import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...

  7. Windows下编译SDL

    Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...

  8. Windows下编译安装 FFmpeg

    在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...

  9. windows下编译php7图形库php_ui.dll

    CSDN博客 具有图形化编程才有意思,这几天看到了php ui 图形扩展,只是现在只能下载php 7.1的 本次教程编译php7.2.6的 php ui 要是linux下编译起来比较简单 但是 win ...

随机推荐

  1. FZU2177——ytaaa——————【区间dp】

     ytaaa Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  2. window.location.href.substr(window.location.href.length - 6)

    if (window.location.href.substr(window.location.href.length - 6) == "flag=1") { var tOptio ...

  3. C#基础知识-使用XML完成一个小程序(十一)

    上一篇中讲到XML基本的结构,还有增删改查的方法,这一篇中我们就来利用XML来完成一个简单的订单系统,主要是实现一个简单学生名单的增删改查,如果想要应用到实际的环境中建议考虑数据量的问题,如果数据量大 ...

  4. Shiro - 关于Realm

    之前在Authentication和Authorization中也提到Realm. 无论是身份验证还是权限验证,无论数据以什么方式存在,我们都需要访问一些数据并将其转换为Shiro可以识别的格式. 通 ...

  5. 流畅的python和cookbook学习笔记(六)

    1.同时迭代多个序列(zip(函数)) 使用zip()函数可以同时迭代多个序列. >>> X = [1, 2, 3, 4, 5, 6] >>> Y = [121, ...

  6. 版本控制器之SVN

    1.开发中的实际问题 1.1 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流——需求之一:备份! 1.2 这个项目中需要一个很复杂的功 ...

  7. TCP客户端 服务端详细代码

    本文章转自http://www.myexception.cn/program/1912019.html TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TC ...

  8. javascript 文字大小自动适应文本框 (文字大小自动调整)

    javascript 文字大小自动适应文本框 (文字大小自动调整) TOC 思考 思考一:面积法 思考二:微调法 代码 在进行类似微博墙之类的展示页面中,经常会遇到这样的需求:在固定大小的区域放入字数 ...

  9. 用css3+js写了一个钟表

    有一天看到css3旋转这个属性,突发奇想的写了一个钟表(没做浏览器兼容),来一起看看是怎么写的吧! 先给个成品图,最终结果是个样子的(动态的). 首先,思考了一下页面的布局,大致需要4层div,最底层 ...

  10. 查看postgre都有哪些语句占用CPU

    查看占用CPU最多的几个postgresql ps aux | grep postgres | sort -n -r -k 3 | head -10 | awk '{print $2, $3}' 查看 ...