qt dll的创建和使用
来源:互联网 发布:工作日志软件哪个好 编辑:程序博客网 时间:2024/05/20 05:26
这些dll和lib都是qt的dll和lib库,
因为这些dll中都有如下文件,
test_qt_lib_global.h
#include <QtCore/qglobal.h>
#ifdef DATABASE_LIB
# define DATABASE_EXPORTQ_DECL_EXPORT
#else
# define DATABASE_EXPORT Q_DECL_IMPORT
#endif
#include "database_global.h"
namespace WorkStation{
namespacedatabase{
/*
数据库管理类:增删改查等
*/
classDATABASE_EXPORT DatabaseManage : public QObject
//将该类DatabaseManage从dll导出,供其他类使用
//其他类开始使用dll中导出的类
#include "Database\DatabaseManage.h"
m_spSettingsdb = DatabaseManage::Instance()->GetAppSettingsDb();
#ifndef DATABASE_GLOBAL_H
#define DATABASE_GLOBAL_H
#include <QtCore/qglobal.h>
#ifdefDATABASE_LIB
# define DATABASE_EXPORT Q_DECL_EXPORT
#else
# define DATABASE_EXPORT Q_DECL_IMPORT
#endif
#endif // DATABASE_GLOBAL_H
//导出database.dll
#ifndef DATABASE_H
#define DATABASE_H
#include "database_global.h"
#include "DatabaseManage.h"
using namespaceWorkStation::database;
classDATABASE_EXPORT Database
{
public:
Database();
~Database();
private:
};
extern"C" DATABASE_EXPORTDatabaseManage*GetDatabaseManage();
#endif // DATABASE_H
//cpp文件
//返回一个DatabaseManage*
DatabaseManage* GetDatabaseManage()
{
return DatabaseManage::Instance();
}
DatabaseHelper::DatabaseHelper():m_DatabaseManage(NULL)
{
QDir appDir(QCoreApplication::applicationDirPath());
QString dllPath = appDir.absoluteFilePath("Database.dll");
m_DatabaseLib.setFileName(dllPath);
if(m_DatabaseLib.load())
{
//database.dll中,有导出该方法,GetDatabaseManage()
/*
class DATABASE_EXPORT Database
{
public:
Database();
~Database();
private:
};
extern "C" DATABASE_EXPORT DatabaseManage*GetDatabaseManage();
DatabaseManage* GetDatabaseManage()
{
return DatabaseManage::Instance();
}
*/
//详见database.h头文件该头文件是qt创建dll时候,自动命名的头文件,跟工程名字database相同
GetDatabase GetDatabaseManage= (GetDatabase)m_DatabaseLib.resolve("GetDatabaseManage");
if(GetDatabaseManage)
{
//返回一个DatabaseManage*
m_DatabaseManage =GetDatabaseManage();//GetDatabaseManage()返回DatabaseManage::Instance();
}
}
}
//以后,直接使用DatabaseManage这个类,去操作数据库
DatabaseHelper::Instance()->GetDatabaseManage()->CheckCreateGlobal();
bool DatabaseManage::CheckCreateGlobal()
{
return GetSystemDb()->CheckSystemDb();
}
/*
数据库管理类:增删改查等
*/
///database.dll中的导出类
classDATABASE_EXPORTDatabaseManage :publicQObject
{
public:
static DatabaseManage*Instance();
bool CheckCreateGlobal();
void Initialization(QString const& userName);
bool GetDB(const QString&strPluginName, constQString& strDBName,QSqlDatabase&dataBase);
QSharedPointer<SystemDb>GetSystemDb();//新建一个SystemDb实例
QSharedPointer<SettingsInterface>GetAppSettingsDb();
QSharedPointer<SettingsInterface>GetUserConfigDb();
QSharedPointer<MsgInterface>GetMsgDb();
private:
DatabaseManage(QObject*parent);
~DatabaseManage();
private:
static DatabaseManage* m_instance;
QSharedPointer<SqliteDatabase> m_spSqlite;
QSharedPointer<SystemDb> m_spSystemdb;
QSharedPointer<SettingsInterface> m_spAppSettingsDb;
QSharedPointer<SettingsInterface> m_spUserConfigDb;
QSharedPointer<MsgInterface> m_spMsgDb;
QString m_UserName;
};
}
- qt dll的创建和使用
- DLL的创建和使用
- dll的创建和使用
- DLL的创建和使用
- dll的创建和使用
- DLL的创建和使用
- DLL的创建和使用
- Qt Creator创建使用dll
- MFC和Qt分别使用Qt生成的Dll。
- QT动态链接库(DLL)的创建和调用
- 创建和使用DLL
- 创建和使用DLL
- VC++中DLL的创建和使用
- VC DLL的创建和使用
- 创建Win32 DLL的步骤和使用
- Delphi中DLL的创建和使用
- VC6中dll的创建和使用
- vs中Dll的创建和使用
- QrCode二维码
- Xcode之修改系统生成的注释模板
- Xshell4连接Linux系统中文显示乱码解决办法
- linux-0.11内核调试运行阅读环境的搭建及使用
- iOS面试题-iOS部分
- qt dll的创建和使用
- 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)
- rhel 7—— /boot/grub2/grub.cfg
- var_list 格式化输出,Windows 和Linux
- Linux CPU Topology
- poj 2104 K-th Number
- 初步了解Activity
- Linux环境下网络编程杂谈
- 某网站出现自己电脑的搜索记录,这是怎么回事呢?