Leptonica在VS2010中的編譯二,編譯 Leptonica1.68

無名_四葉草發表於2020-04-05


官方編譯資料

是英文的,英文好的可直接參考 官方VS2008編譯資料

Leptonica依賴的包編譯請參考 Leptonica在VS2010中的編譯一,編譯它依賴於庫

編譯前準備:

  1. 下載原始碼 leptonica-1.68.tar.gz
  2. 下載VS2008工程 vs2008-1.68.zip
  3. 下載lib和include leptonica-1.68-win32-lib-include-dirs.zip
  4. 編譯Leptonica依賴的包,前面已經講過。

注意上面的3裡面的lib是vs2008編譯的,將vs2010編譯好的檔案放到lib目錄。

編譯

建立如下目錄:

BuildFolder\
  include\
  leptonica-1.68\
  lib\

  1. 將leptonica-1.68-win32-lib-include-dirs.zip解壓的include目錄裡面的檔案放到上面的include目錄。
  2. 將leptonica-1.68.tar.gz的解壓的檔案放到leptonica-1.68目錄
  3. 將vs2008-1.68.zip解壓的檔案放到leptonica-1.68目錄
  4. 拷貝一份vs2008到當前目錄,改名為2010.

目錄結構如下


BuildFolder 
│  
├─include
│          
├─leptonica-1.68
│  ├─vs2008     
│  ├─vs2010
└─lib

用vs2010開啟“leptonica.sln”,開始編譯

  1. 有些檔案會出現奇怪的C2275和C2146錯誤,解決方法,找到出錯處,將所有變數的宣告放在函式的開頭即可;
  2. 有些檔案會出現奇怪的C2057錯誤,解決方法,註釋掉類似的static const l_int32 L_BUF_SIZE = 52;新建一個redefineconstant.h檔案,將此檔案包含到出現此問題的檔案中,redefineconstant.h檔案的內容為:
    #ifndef _REDEFINE_CONSTANT_H  
    #define  _REDEFINE_CONSTANT_H  
      
    #include "allheaders.h"  
      
    #define L_BUF_SIZE 512  
    #define MAX_ALLOWED_DILATION 25  
      
    #endif // _REDEFINE_CONSTANT_H  

  3. 依賴包版本修改,“ZLIB_VERSION”的定義在“leptonica_versionnumbers.props”檔案中,可以修改具體的值。
     <PropertyGroup Label="UserMacros">
        <GIFLIB_VERSION>416</GIFLIB_VERSION>
        <LIBJPEG_VERSION>8c</LIBJPEG_VERSION>
        <LIBLEPT_VERSION>168</LIBLEPT_VERSION>
        <LIBLEPT_NUMBER>1.68</LIBLEPT_NUMBER>
        <LIBPNG_VERSION>143</LIBPNG_VERSION>
        <LIBTIFF_VERSION>394</LIBTIFF_VERSION>
        <ZLIB_VERSION>125</ZLIB_VERSION>
      </PropertyGroup>
    1.72編譯需要註釋掉:tiff4.0.6的tiffiop.h的下面程式碼
    //#if !defined(HAVE_SNPRINTF) && !defined(HAVE__SNPRINTF)
    //#undef snprintf
    //#define snprintf _TIFF_snprintf_f
    //extern int snprintf(char* str, size_t size, const char* format, ...);
    //#endif

相關文章