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。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM