qtpdfium 多平台编译

news2024/9/22 15:51:35

源码下载地址:https://codeload.github.com/kkzi/qpdf/zip/2681018e300738d6da9a9f89f06c93fc3ef17831

参考:https://blog.51cto.com/u_2194662/5256871

开发环境:QT 5.15.2

1.  windows下编译:

编译环境:vs2019+qt5.15.2

vs2019打开工程qpdf.sln

重新生成解决方案后设置test_pdfviewer设为启动项目:

2.  Linux (ubuntu x64)

编译环境:gcc_64 qt5.15.2

2.1 修改项目内容:

修改:qpdf/CMakeLists.txt

# add -------------------------------------------------------------------------------
if(CMAKE_COMPILER_IS_GNUCXX)
    set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") #设置编译C++文件时,使用c++11
    message(STATUS "optional:-std=c++11")
endif(CMAKE_COMPILER_IS_GNUCXX)

IF (WIN32)
    MESSAGE(STATUS "Now is windows")
    add_compile_options(-shared -fPIC) 
ELSEIF (APPLE)
    MESSAGE(STATUS "Now is Apple systens.")
ELSEIF (UNIX)
    MESSAGE(STATUS "Now is UNIX-like OS's. Including aPPLE os x  and CygWin")
    add_compile_options(-std=c++11 -shared -fPIC) #linux下必须要添加编译选项-fPIC,要不然提示错误
ENDIF ()
#-------------------------------------------------------------------------------------

2.2 ubuntu下载cmake:

Download CMake

# 解压
> tar -zxvf cmake-3.30.2-linux-x86_64.tar.gz
> cd cmake-3.30.2-linux-x86_64
> ./bin/cmake-gui

进入build目录执行make:

执行./test_pdfviewer

3.  linux(银河麒麟系统 飞腾cpu aarch64)

编译环境:qt5.15.2

x64操作一致下载对应cmake版本未修改qpdf/CMakeLists.txt

最后报错危险的重寻址:不支持的重定位

多平台编译的例子程序(使用原生平台而不是交叉编译,若使用交叉编译需要修改.pro使其调用对应平台生成的库):

例子下载链接:https://download.csdn.net/download/qq_23903863/89639244

.pro在不同平台使用不同库的配置: 

# qpdf path
QPDF_PATH = $${PWD}/qpdf

INCLUDEPATH += $${QPDF_PATH}/include
message($$QMAKESPEC)
win32-msvc
{
    LIBS += -L$${QPDF_PATH}/lib/x64
    CONFIG(debug, debug | release){
        LIBS += -lpdfiumd -lqpdfd
    }else{
        LIBS += -lpdfium -lqpdf
    }
}
unix
{
    contains(QT_ARCH, arm64){
        message("linux aarch64")
        LIBS += -L$${QPDF_PATH}/lib/linux-aarch64
    }else{
        message("linux x86")
        LIBS += -L$${QPDF_PATH}/lib/linux-x64
    }
    LIBS += -lpdfium -lqpdf

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】线性规划模型(笔记)

线性规划的作用 求一个线性目标函数在线性可行域内的最值问题 线性规划的典型应用 配送运输问题:选大车还是小车生产规划问题:每种原料各买多少几何切割问题:切割长宽各多少买卖利润问题:最多能挣多少钱… 线性规划的本质 问…

6 二进制、十进制、八进制和十六进制的概念与进制转换,原码、反码、补码的概念与计算

目录 1 进制 1.1 常见的进制 1.2 不同进制的整数在 C 语言中的写法 1.3 printf 以不同进制形式输出整数 1.4 案例:使用不同的进制形式输出同一整数 2 进制的转换 2.1 二进制与十进制转换 2.1.1 二进制转换成十进制 2.1.2 十进制转换成二进制 2.2 八进制和…

pygame 赛亚人打怪

笔者最近学了一点pygame,献丑了。 代码附上,大佬勿喷! import random import timeimport pygameWIDTH 410 HEIGHT 750 ENEMY_BORN pygame.USEREVENT 1 BULLET_BORN pygame.USEREVENT 10 ENEMY_BULLET_BORN pygame.USEREVENT 100 REW…

2024年最新版小程序云开发数据模型的开通步骤,支持可视化数据库管理,支持Mysql和NoSql数据库,可以在vue3前端web里调用操作

小程序官方又改版了,搞得石头哥不得不紧急的再新出一版,教大家开通最新版的数据模型。官方既然主推数据模型,那我们就先看看看新版的数据模型到底是什么。 一,什么是数据模型 数据模型是什么 数据模型是一个用于组织和管理数据的…

Linux信号控制进程种类、内存查看和NICE优先级

1.信号种类 1)SIGHUP 重新加载配置 2)SIGINT 键盘中断CtrlC 3)SINGQUIT 键盘退出Ctrl\ 9)SIGKILL 强制终止 15)SIGTERM 正常结束终止 18)SIGCONT 继续 19)SIGSTOP…

使用克隆软件克隆Windows 10 硬盘

为什么 Windows 用户要克隆硬盘驱动器 您打算将旧硬盘升级为新硬盘吗?是否可以将操作系统迁移到 SSD?如何制作硬盘的相同副本?如何安全地升级操作系统而不会出现可启动故障问题?是否有任何安全便捷的方法可用于传输数据并升级到更…

Linux 中断机制(二)之中断子系统框架

目录 一、概述二、中断控制器 GIC1、Distributor 接口2、Redistributor 接口3、CPU 接口 三、中断类型四、中断号五、中断申请函数1、request_irq 函数2、request_threaded_irq() 函数3、gpio_to_irq 函数4、free_irq 函数 六、中断服务函数 一、概述 一个完整的中断子系统框架…

zdppy+vue3+onllyoffice开发文档管理系统实战 20240814上课笔记 验证码功能的进一步优化

遗留问题 1、实现验证码的功能2、要记录登录的Token和用户名,跳转到首页3、注册功能4、用户管理5、角色管理6、权限管理7、分享功能 当前进度 目前我们已经封装了zdppy_captcha这个框架,这个框架是专门用来生成验证码的。 缺少一些功能: …

024集——批量复制文字样式、改变文本文字样式——vba代码实现

CAD vba 不可直接修改文字样式的名称,可复制文字样式,文字样式名称前加特定前缀 要为对象改变文字样式,可使用 StyleName 属性。 If ent.ObjectName "AcDbText" Then ent.StyleName "新的" Set sel creatsel("…

【C#】读取与写入txt文件内容

在 C# 中读取和写入文本文件内容是一个常见的任务。以下是使用几种不同方法读取和写入文本文件的示例。 一、读取txt文件内容 1.1 使用 StreamReader using System; using System.IO;class Program {static void Main(){string filePath "C:\path\to\your\file.txt&qu…

【Unity打包Android】Gradle报错,Deprecated Gradle features were used in this build ···

Unity 2020.3.41f1c1 打包Android 加入Google Admob广告SDK后,打包Android失败,具体报错如下: 报错1: Starting a Gradle Daemon, 2 stopped Daemons could not be reused, use --status for details> Configure project :l…

Hutool找出对象修改前后的字段变化

首先Maven引入Hutool依赖&#xff1a; <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.21</version> <!-- 请根据实际最新版本调整 --></dependency> 测试&#xff1a; 1…

OpenAI API error: “Unrecognized request argument supplied“

题意&#xff1a;OpenAI API 错误&#xff1a;‘提供了无法识别的请求参数’ 问题背景&#xff1a; Im receiving an error when calling the OpenAI API. Its not recognizing file argument, which I submitted to the API. 我在调用 OpenAI API 时遇到错误。API 不识别我提…

python语言day6 os random datetime .ini文件

os&#xff1a; 获取运行当前py文件的绝对路径&#xff1a; abspath中添加路径&#xff0c;会直接和绝对路径拼接。 folder_path os.path.abspath("") print(folder_path) 路径拼接&#xff1a; mac系统路径&#xff1a;file/TranslucentTB win系统路径&#xff1a;…

日撸Java三百行(day23:使用具有通用性的队列)

目录 前言 一、基础知识准备 1.Object类 2.Integer类 2.1包装类 2.2装箱和拆箱 2.3Integer类的常见方法 二、代码实现 1.队列创建及初始化 2.方法创建 3.数据测试 4.完整的程序代码 总结 前言 在昨天&#xff0c;我们使用了两个队列来辅助完成二叉树的“压缩顺序…

Android gradle 构建

Understanding Tasks - Gradle task kapt 是 Kotlin 语言的注解处理器&#xff0c;它是 Android Studio 中用于处理 Kotlin 注解的工具。它通过在编译期间生成代码来增强 Kotlin 代码的功能。需要 Kotlin 编译器来解析和处理注解&#xff1b;使用 APT 来生成代码&#xff0c…

【通天星主动安全监控云平台信息泄露漏洞】

目录 一、漏洞简介 二、资产测绘 三、poc利用 四、脚本批量验证 一、漏洞简介 “通天星主动安全监控云平台”是一个基于云计算技术的安全监控平台&#xff0c;通常用于保障网络安全、工业控制系统安全或物联网设备的安全。该信息泄露漏洞位于接口&#xff1a;/808gps/Stand…

可移植性(兼容性)测试指南

可移植性是指应用程序能够安装到不同的环境中&#xff0c;在不同的环境中使用&#xff0c;甚至可以移动到不同的环境中。当然&#xff0c;前两者对所有系统都很重要。就PC软件而言&#xff0c;鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速变化&#xff0…

JavaScript秒值转换为年月日时间字符串

当前效果&#xff1a; 因为后端传递过来的是秒值&#xff0c;显示的时候也是秒值。 但是这种不太友好&#xff0c;所以需要转换为 “xxxx年xx月xx日 xx:xx:xx” 的格式。 参考代码&#xff1a; formatDate (now) {const date new Date(now)var y date.getFullYear() // 年…