windows7 vs2010 vs2015 編譯poppler0.88版本

 

poppler  官網 http://poppler.freedesktop.org/   

下載 0.88版本 https://poppler.freedesktop.org/poppler-0.88.0.tar.xz

cmake 打開並創建  build文件夾   筆者沒有安裝gtk  和 qt5 所以不選 

添加release

去掉 iconv  不去掉就會報錯 筆者沒有編譯 iconv   有興趣的朋友可以編譯後指定

1.添加freetype  

下載地址  https://jaist.dl.sourceforge.net/project/gnuwin32/freetype/2.3.5-1/freetype-2.3.5-1-src.zip

打開  \freetype-2.3.5-1-src\src\freetype\2.3.5\freetype-2.3.5\builds\win32\visualc\freetype.sln  直接編譯就行了沒有錯誤

修改  /poppler-0.88.0/CMakeLists.txt   添加如下 你自己的地址

在  find_package(Freetype REQUIRED) 上面添加:

set(FREETYPE_INCLUDE_DIRS "E:/pdf閱讀器/freetype-2.3.5-1-src/src/freetype/2.3.5/freetype-2.3.5/include")
set(FREETYPE_LIBRARY "E:/pdf閱讀器/PopplerLIB/freetype235.lib")

2.添加 jpeg 

下載  官網 http://www.ijg.org/   筆者下載的是最新的  http://www.ijg.org/files/jpegsrc.v9d.tar.gz

打開 vs2010命令行   跳轉到目錄下後:

copy /Y jconfig.vc jconfig.h

nmake -f makefile.vc libjpeg.lib

在查找jpeg的地方添加:
set(JPEG_LIBRARY "E:/pdf閱讀器/PopplerLIB/libjpeg.lib")
set(JPEG_INCLUDE_DIR "E:/pdf閱讀器/jpeg-9d")

3.   openjpeg 錯誤
 

下載 https://github.com/uclouvain/openjpeg/releases/download/v2.3.1/openjpeg-v2.3.1-windows-x86.zip

set(OpenJPEG_DIR "E:/pdf閱讀器/openjpeg-v2.3.1-windows-x86/lib/openjpeg-2.3")

4. vs2010  c++ 11支持較差 無法正常編譯   可以用vs2015及以上編譯 筆者使用的是vs2015  

錯誤  for語句不能出現在 constexpr 構造函數中     關於constexpr大家可以參考  https://www.cnblogs.com/sjjg/p/10713866.html

 https://www.jianshu.com/p/dd34cee5242c  這個是關於靜態全局變量初始化容易出現的錯誤。

  1. Decrypt.cc 中類似這樣的類
    // {03} \cdot s
    struct Mul03Table
    {
      constexpr Mul03Table() : values()
      {
        for(int s=0; s<256; s++) {
          const unsigned char s2 = (s & 0x80) ? ((s << 1) ^ 0x1b) : (s << 1);
          values[s] = s ^ s2;
        }
      }
    
      constexpr unsigned char operator()(uint8_t i) const { return values[i]; }
    
      unsigned char values[256];
    };
    
    static constexpr Mul03Table mul03;
    
    
    去掉 constexpr   改爲如下:   
    
    struct Mul03Table
    {
      Mul03Table()
      {
        for(int s=0; s<256; s++) {
          const unsigned char s2 = (s & 0x80) ? ((s << 1) ^ 0x1b) : (s << 1);
          values[s] = s ^ s2;
        }
      }
    
     const unsigned char operator()(uint8_t i) const { return values[i]; }
    
      unsigned char values[256];
    };
    
    static const Mul03Table mul03;
    

    5.INT32 重定義錯誤  幹掉他就就行了 jmorecfj.h  。

  2. iob_func 錯誤  添加在jpegwriter.cc

    #if _MSC_VER>=1900
    #include "stdio.h" 
    _ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
    #ifdef __cplusplus 
    extern "C"
    #endif 
    FILE* __cdecl __iob_func(unsigned i) {
    	return __acrt_iob_func(i);
    }
    #endif 

     

  3. 只編譯poppler 就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章