首页 > 数据库 >Qt静态编译后使用QtCipherSqlitePlugin静态编译库

Qt静态编译后使用QtCipherSqlitePlugin静态编译库

时间:2024-04-24 16:36:41浏览次数:16  
标签:插件 QtCipherSqlitePlugin Qt 静态 编译 添加 include

      Qt静态编译后使用QtCipherSqlitePlugin静态编译库

   语文功底不好,标题起的有点绕口,解释一下:

      就是我使用的Qt是Qt5.15.2静态编译包(要Qt静态编译文件这里下载:QT5.15.2静态编译包下载 - koomee - 博客园 (cnblogs.com)),

   先入正题讲解决办法(12345走起):    

   我的开发环境VS2022+Qt-tools+Qt5.15.2(动态编译版和静态编译版都有),在这个环境下的操作如下;

 

      1. 下载QtCipherSqlitePlugin这个插件,并编译sqlitecipher.lib 和 sqlitecipherd.lib 放到你的项目文件夹下(也可以放到其他地方);

      2. 在VS中右键你的项目->属性->Qt project seting->选项设置 Additional Project Settings->添加 QTPLUGIN+= sqlitecipher  ;       

             

   3. 右键你的项目->添加->现有项;选择你编译出来的库 sqlitecipher.lib 和 sqlitecipherd.lib 并添加

                

  4 .  在.cpp文件中包含头文件并添加语句:Q_IMPORT_PLUGIN(SqliteCipherDriverPlugin);        

 

#include <QtSql>
#include<QtPlugin>

Q_IMPORT_PLUGIN(SqliteCipherDriverPlugin);

   5 . 用如下语句打印可用驱动,测试是否成功:    

    qDebug() << QSqlDatabase::drivers();

      如果不出意外你是会成功的。

 

下面记录我解决这个问题的心路历程,

 

最近需要用到程序内嵌数据库,SQLite当然是最好的选择,但是Qt自带的SQLite不能加密,

于是就打算使用QtCipherSqlitePlugin这个插件(下载地址:GitHub - devbean/QtCipherSqlitePlugin: A Qt plugin for cipher SQLite.);

    先说一下我的开发环境VS2022+Qt-tools+Qt5.15.2(动态编译版和静态编译版都有)  有时也用Qt Creator开发

          

             

 

    网上都是讲编译成DLL然后放到Qt动态编译版的 $$QT_DIR\plugins\sqldrivers目录下;我编译成sqlitecipher.dll 和 sqlitecipherd.dll后,采用动态编译时是没有问题的。     

   
#include <QtDebug>
#include <QtSql>

//打印可用驱动
qDebug() << QSqlDatabase::drivers();

       如下图是可以得到SQLITECIPHER驱动的;

            

 但是在程序发布的时候我想采用静态编译QT编译发布,我编译了 sqlitecipher.lib 和 sqlitecipherd.lib 放到$$QT_DIR\plugins\sqldrivers目录下;在编译时就提示找不到 SQLITECIPHER 的驱动;

                    

      于是只有百度求助万能的广大码友。终于,皇天不负有心人,我找到了这位网友的文章:如何在 静态编译的QT 5.5.1 中 使用数据库插件连接 ODBC_qt 静态编译怎么添加插件-CSDN博客

   摘抄部分内容如下:             

       我了解到,Qt“调用静态插件”, Qt正好有那么篇介绍的文章:
       How to Create Qt Plugins
        按照上面的说明,在.pro 文件中加入如下语句:
        QTPLUGIN+= qsqlodbc 
        并在.cpp文件中添加语句:
        #include<QtPlugin>
        Q_IMPORT_PLUGIN(QODBCDriverPlugin)
原文链接:https://blog.csdn.net/humadivinity/article/details/50545100

 由于我使用的开发环境是VS2022+Qt-tools+Qt5.15.2 和Qt Creator里面添加插件语句设置不一样;这里需要这样设置:

    在VS中右键你的项目->属性->Qt project seting->选项设置 Additional Project Settings->添加 QTPLUGIN+= sqlitecipher  ; 

 

  然后要使用Qt plugin需要添加头文件并引入Plugin:   

#include <QtSql>
#include<QtPlugin>
//引入插件 注意这里是SqliteCipherDriverPlugin
Q_IMPORT_PLUGIN(SqliteCipherDriverPlugin);

  然后 清理,重新编译,运行,得到如下:

        
     到这里算是成功了!!
 

 

标签:插件,QtCipherSqlitePlugin,Qt,静态,编译,添加,include
From: https://www.cnblogs.com/Koomee/p/18155579

相关文章

  • 【性能监控】如何有效监测网页静态资源大小?
    前言作为前端人员肯定经常遇到这样的场景:需求刚上线,产品拿着手机来找你,为什么页面打开这么慢呀,心想自己开发的时候也有注意性能问题呀,不可能会这么夸张。那没办法只能排查下是哪一块影响了页面的整体性能,打开浏览器控制台一看,页面上的这些配图每张都非常大,心想这些配图都这么大,页......
  • 编译用于Qt的opencv问题解决
    CMakewasunabletofindabuildprogramcorrespondingto"MinGWMakefiles"解释:这个错误表明CMake无法找到用于生成Makefiles的构建程序。在使用CMake生成项目文件时,如果指定了"MinGWMakefiles",CMake需要一个Make工具来构建项目,而这个工具通常是由MinGW提供的。如......
  • C程序的编写、编译和运行
    一、编写 命名为xxx.c文件#include<stdio.h>intmain(){printf("hello,world!");getchar();用于双击可执行文件时窗口停留不关闭return0;}二、编译使用编译器GCC进行编译,GCC是C语言的跨平台编译器,现在安装QT等工具时已经自带了GCC,不用特意......
  • 【编译原理】原理笔记
    随便记点防止期末烂掉语法分析直接左递归的消除实际就是左递归转右递归法1:直接替换\[A\rightarrowA\alpha|\beta\Rightarrow\begin{cases}A\rightarrow\betaA',\\A'\rightarrow\alphaA'|\epsilon\end{cases}\]法2:矩阵法前置知识:\[I=\begin{pmatrix}\epsilo......
  • JS基础(二)运算符、流程控制语句、数组对象、JSON对象、Date对象、Math对象、Function对
    一运算符<script>//算数运算符//(1)自加运算varx=10;//x=x+1;//x+=2;varret=x++;//先赋值再计算:x+=1//varret=++x;//先计算再赋值:x+=1console.log(x)......
  • 【Lua】源码编译
    1、准备工作1、下载lua源码在Lua官网下载指定版本的Lua源码。2、下载依赖库readline、ncurses在readline官网下载readline源码;在ncurses官网下载ncurses源码。2、编译readline将readline源码放到环境上并解压。执行以下命令安装./configuremakemakeinstall3、编译ncu......
  • 2024年4月22日最新版用13.2.0版的mingw64编译3.2.4版的wxwidgets
    相关文件下载链接:13.2.0版的MinGW643.2.4版的wxwidgets相关环境变量设置:右键单击“我的电脑”->属性->高级系统设置->环境变量->系统变量->Path->编辑->新建,输入解压后的mingw64中的bin路径。例如:D:\devolopment\mingw64\bin\测试成功安装与否,在上述环境变更设置好后......
  • 前端【uniapp】02-uniapp【全局文件】【组件【内置、扩展】】【声明周期】【API调用】
    一、uni-app基础知识uni-app是组合了Vue和微信小程序的相关技术知识,要求大家同时俱备Vue和原生小程序的开发基础。1、全局文件在小程序中有全局样式、全局配置等全局性的设置,为此在uni-app中也有一些与之相对应的全局性的文件。uni.scssuni-app项目在运......
  • C++八股之函数重载与重写-静态多态与动态多态
    重载:是指在同一作用域中允许存在多个同名函数,⽽这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。重载与类无关,重载实现编译时多态,属于静态绑定。重写:指⼦类新定义⽗类的函数的做法。如果重写的函数在父类中是虚函数,那么能够实现动态多态。如果在父类中没......
  • Django不显示CSS的效果(基于Django模板的静态资源配置问题)
    在搞毕设过程中,习惯起见我直接在网上找了现成的前端设计页面,如图:这种前端项目的结构一般是一个login.html、一个style.css、一个背景图片即可搞定的,直接点击html,浏览器中打开的就是上图所示的界面效果。但是:当我把前端所有文件扔进DjangoApp的templates文件夹后,运行项目的效果......