VS2017编译LevelDB
环境:
操作系统: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的更多相关文章
- windows 平台使用 VS2017 编译openssl源码
windows 平台使用 VS2017 编译openssl源码 1)依赖安装 安装 perl 脚本解释器 下载 http://libevent.net/download 安装 nasm 汇编器 C:\ ...
- Windows下 VS2015编译levelDB(nmake)
VS2015编译levelDB Leveldb是一个google实现的非常高效的kv数据库,非常适合嵌入到程序中.如果有简单的key-value数据库需求,而又想使用一个数据库服务的话,levelDB ...
- windows下编译leveldb
前提条件,下载boost库并编译 boost库弄好后,就可以编译leveldb了 首先,下载leveldb-windows,这个github上有 一. 1文件->新建->从现有代码文件创建 ...
- windows 平台使用 VS2017 编译 libevent 源码
一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...
- VS2017 编译 Visual Leak Detector + VLD 使用示例
起因 一个Qt5+VS2017的工程,需要进行串口操作,在自动时发现一段时间软件崩溃了,没有保存log,在 debug 的时候发现每运行一次应用占据的内存就多一点,后来意识到是内存泄漏了.这个真是头疼 ...
- 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 ...
- VS2017 编译 chromium和webrtc
Chromium的编译和WebRTC的编译方式相同,WebRTC官网也是使用的Chromium的编译文档. 步骤一.跳 - 墙,先跳 - 墙这是第一步哟,chromium大概有10几个G,webrtc ...
- VS2017编译SFML SDK配制环境详解
SFML和Visual Studio 介绍 如果您在Visual Studio IDE(Visual C ++编译器)中使用SFML,本教程是第一个应该阅读的教程.它将解释如何配置您的SFML项目. ...
- 使用VSCode和VS2017编译调试STM32程序
近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台 ...
随机推荐
- KMP算法的next[]数组 的求法
例如: next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较.首先将前一位与其next值对应的内容进行比较,如果相等,则该位的ne ...
- 使用 boot-repair 对 Windows + Ubuntu 双系统引导修复
问题描述: 由于在windows上进行更新/重装/修改了引导设置以后,windows会“自私”地重写引导,导致Ubuntu系统引导消失而无法选择Ubuntu启动.
- js中数值类型相加变成拼接字符串的问题
如题,弱类型计算需要先进行转型,例: savNum=parseInt(savNum)+parseInt(num);或者使用 number()转型
- Spring Boot 启动:No active profile set, falling back to default profiles: default
启动 Spring Boot 失败,但是没有出现多余的异常信息: 检查之后发现是依赖的问题(之前依赖的是 spring-boot-starter),修改即可: 方法二: pom.xml加上下面两个依赖 ...
- java枚举(enum)
1. 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum (抽象类) 类的子类. enum AccountType { SAVING, FIXED, CURRE ...
- node的优缺点及应用场景
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎(V8引擎执行Javascript的速度非常快,性能非常好) 可以说node是运行在服务器端V8引擎上的Ja ...
- centos 6.8安装redis
1. 下载到redis下载页面https://redis.io/download下载对应版本的reids安装包,如:redis-${version}.tar.gz . 2. 安装redis的详细安装步 ...
- string 与 stringbuilder效率相差很大
方式一: (while ((line = sr.ReadLine()) != null) { strData +=(line+"\r\n"); } 方式二: while ((lin ...
- 向JSP中静态导入HTML文件时,运行jsp时,html中中文产生乱码问题最简单的解决方法
在保证其他的编码格式一致的情况下 在html标签内,head标签外添加一下代码时可以完美解决 亲测 <%@page pageEncoding="UTF-8"%>
- Linux常用功能及实现命令
1.设置node.npm.appium等命令全局访问 因为 /opt/node/bin这个目录是不在环境变量中的,所以只能到该目录下才能执行node命令,如果在任意目录下执行node命令的话 ,必须通 ...