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 就行了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值