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