您的位置:首页 > 编程语言 > Qt开发

qt dll的创建和使用

2016-03-30 15:26 387 查看
这些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 namespace
WorkStation::database;

class
DATABASE_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中的导出类
class
DATABASE_EXPORTDatabaseManage :
publicQObject
{
public:
static
DatabaseManage*Instance();
bool
CheckCreateGlobal();
void
Initialization(QString
const& userName);
bool
GetDB(const QString&
strPluginName, const
QString& 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;

};

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: