環境:
操作系統: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。
