Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记

这篇具有很好参考价值的文章主要介绍了Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

  为使用AES加密库(AES/CBC加解密),选用Crypto ++库(官网)。
  最新Crypto C++库依次为:8.8.0版本(2023-6-25)、8.7.0(2022-8-7)和8.6.0(2021-9-24)。
  网上实践的最新版本为8.6.0(2023-1-30),其中提到8.7.0使用有问题,但没有描述具体问题。

二、思路 & 尝试

  笔者在其他工程中用到过8.7.0版本(基于vcpkg,较重),但基于上述博主的提示,暂按下8.7.0版本而使用8.6.0。
  步骤(有调整和优化)如下:

 1. 下载crypto++ 8.6.0代码并unzip生成工程文件夹 → cryptopp860.zip 
 2. 设置环境变量PATH,添加qmake和mingw32-make到全局路径
    验证:qmake -v  位置:<QT_HOME>\5.15.2\mingw81_64\bin\qmake
     	 g++ -v    位置:<QT_HOME>\Tools\mingw810_64\bin\mingw32-make.exe
 3. 创建工程文件(cryptopp860.pro)
	qmake -project 
 4. 编辑pro文件(cryptopp860.pro)
	① TEMPLATE从【app】改为【lib】
	② 添加定义和标识
	DEFINES += CRYPTOPPLIB_LIBRARY
	QMAKE_CXXFLAGS += "-msse4.2"
	QMAKE_CXXFLAGS += "-mavx"
	QMAKE_CXXFLAGS += "-mavx2"
	QMAKE_CXXFLAGS += "-mpclmul"
	QMAKE_CXXFLAGS += "-maes"
	QMAKE_CXXFLAGS += "-msha"
	③ 剔除工程文件中的 TestPrograms/xxx 项
 5. 删除工程文件夹中的GNUmakefile文件
	del GNUmakefile 
 6. 编译
	qmake 
	mingw32-make all 或 mingw32-make -j4(多线程、编译得快) 或
	直接使用Qt Creator IDE加载工程进行编译。

  编译过程基本正常,将得到两个文件:cryptopp860.dlllibcryptopp860.a(请注意文件大小)。如图:
Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记,# Qt,桌面开发,动态库,qt,Crypto++,动态库

三、问题 & 对策

  但是在引用该动态链接库时出现异常,错误信息为:

Crypto++ DLL integrity check may fail. Expected module base address is 0x42900000, but module loaded at 0x6dd40000.
Crypto++ DLL in-memory integrity check failed. This may be caused by debug breakpoints or DLL relocation.
Crypto++ DLL integrity check failed. Actual MAC is: 93318****AE8FF3****41D4****ADECE3****F2D.

Exception caught: FileStore: error opening file for reading: TestData/usage.dat

  经调试是动态链接库加载的问题,其中【TestData/usage.dat】为测试用数据。
  怀疑夹杂了其他的测试代码······继续剔除无用的测试代码单元(并同时从工程文件中剔除):
  ① 所有含test(不区分大小写)的文件夹(TestData、TestPrograms、TestVectors)。
  ② 所有含test、bench、validat字样的.cpp和.h文件。
  ③ 可选,所有vc或vs工程文件(.vcxproj)
  再次编译得到的链接库信息如图:
Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记,# Qt,桌面开发,动态库,qt,Crypto++,动态库
  对比可见.a文件“清爽”了不少。再次集成,一切正常。

四、集成引用动态链接库

  在demo工程的.pro文件添加引用指令:

INCLUDEPATH += $$PWD/cryptopp870  # 引用工程中新建文件夹cryptopp870,用于存放头文件
LIBS += -L$$PWD -lcryptopp870     # .dll 和 .a 文件放置于工程文件夹中

  demo工程结构如下:
Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记,# Qt,桌面开发,动态库,qt,Crypto++,动态库
  自此,Qt编译及集成Crypto++ 8.7.0 的问题已解决。
  具体包装Crypto++ 8.7.0库的代码,在后续介绍。

四、结论

  虽然基于源代码编译得到动态库的方式比较“透明”,但也考验使用者对代码的掌控能力。
Crypto++ 8.7.0版本代码的编译问题结症在于混杂了测试、验证代码,从而导致动态库无法加载。

 相关下载:
  8.7.0版本的qt工程版本下载地址,该工程直接可使用Qt Creator IDE打开加载。
  8.7.0版本的动态链接库MinGW 64 bit下载地址,该动态链接库可直接集成到其他Qt工程。

 有关包装Crypto++ 8.7.0库的代码,在后续介绍。文章来源地址https://www.toymoban.com/news/detail-700465.html

到了这里,关于Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin)

    在使用QT进行嵌入式应用开发时,往往程序最终的运行设备是有触屏的设备。因此,不可避免的会遇到虚拟键盘和中文输入的问题。QT自带一个虚拟键盘,可以在构建套件/plugins/platforminputcontexts目录下看到2个文件: qtvirtualkeyboardplugin.dll qtvirtualkeyboardplugin.dll.debug QT自带的虚拟键

    2024年02月12日
    浏览(34)
  • 使用 Qt6-mingw 编译 OpenCV 源码

    Qt 6.6.0 win11 x86_64 网址: https://cmake.org/download/ 选择对应的版本下载 将 cmake.exe 所在的 bin 目录添加到环境变量中 网址: https://opencv.org/releases/ 选择对应的版本下载 Source资源包 解压 “opencv-4.9.0.zip”, 将其解压的 “opencv-4.9.0” 存放到指定路径 “Path” (例如在我的电脑上 “Path”

    2024年01月24日
    浏览(32)
  • Windows环境利用QT+CMake编译mingw版本的opencv

    Opencv官网没有提供mingw版本的opencv库,所以需要自己编译,下面是编译过程,32位64位方法类似。 可以直接下载编译好的mingw版本opencv4.4: 使用CMAKE3.22+QT5.13编译后的opencv4.4(32位的)资源-CSDN文库 如果网络不好,可能会需要自己手动下载下面的文件:  opencv_videoio_ffmpeg.dll+ope

    2024年02月13日
    浏览(34)
  • Windows下QT Creator安装MinGW 32bit编译器

      注:本作者是基于FFmpeg开发需要,故在Windows下QT Creator中安装MinGW 32bit编译器!其它型号编译器参照此文章基本可以实现! 1、下载链接 链接: 2、下载后的文件(Qt路径下包含:5.12.0文件和Tools文件): 1、将:Qt/Tools/mingw730_32拷贝到QT Creator安装路径下的Tools文件下 2、将:

    2024年02月14日
    浏览(53)
  • VSCode+Qt+MinGW开发环境搭建

    VSCode 扩展性很强, 插件机制 让其具备不断演进的潜力,适合作为稳定的开发工具。 VSCode+Qt 开发环境的搭建需要依赖于以下工具: VSCode、Qt ,其中 Qt 需要安装 MinGW 编译工具; VSCode 插件: C++、CMake Tools、Qt Tools、QtConfigure 。 具体思路上, VSCode 只是提供了集成界面,通过它

    2023年04月12日
    浏览(41)
  • YOLOV5 自动刷图脚本实战(六)之OpenCV+CMake+MinGW-64 Qt5编译

    目录  一、OpenCV下载 1、官网地址: 2、安装解压OpenCV 二、OpenCV-Contrib下载 1、下载

    2024年02月03日
    浏览(33)
  • Linux 5.15安全特性之landlock

    Landlock是一个在Linux内核中实现的安全模型,它允许进程在较低的特权级别下运行,并限制其对内核和系统资源的访问。它提供了一种细粒度的权限控制机制,可以用于创建沙盒环境和隔离敏感操作。 Landlock的实现基于eBPF(Extended Berkeley Packet Filter)技术,在Linux 5.15内核中引入

    2024年02月05日
    浏览(43)
  • 统信UOS系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12.8

      上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到自己编译的Qt,所以本篇如何在统信UOS系统上编译Qt5.12.8源码。     系统版本:      参考博文《获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)》   

    2024年02月08日
    浏览(43)
  • QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

    如果需要在QT程序中实现与MySQL数据库的交互,那么必不可少的一环就是对Qt MySql数据库驱动的编译。 操作系统:Windows10 专业版 64位 Qt版本:Qt 5.15.2 开发环境Qt安装路径:D:Qt 交叉编译服务器:Ubuntu 18.4 交叉编译服务器Qt安装路径:/opt/Qt 目标芯片:rk3568 目标平台:arm64 Qt安装

    2024年02月11日
    浏览(60)
  • Tomb.Finance的每周更新(5.9-5.15)

    「Harry大财主的每周二更新35#」 Tomb Tuesday快乐, 我的盗墓者朋友们! 在过去的一周里,我们看到市场的波动和下行的势头越来越大,但是当大家都在忙着看图表的时候,我们却在看我们在Tomb Chain上的性能测试结果,我们在为我们的Cemetery建立和增加功能,并且我们将CeFi的力

    2023年04月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包