# DynamicLibLoadDemo
QLibrary 加载动态库详细用法,封装调用方法,使用简单快速、方法使用 Qt 反射更快捷
核心代码
``` C++
typedef int (* pRunFunctionFun)(const char *, const DS_Request &, DS_Request&);
#define GET_SDK_FUNC(type, func, symbol) GET_FUNC(sdk, type, func, symbol);
#define GET_FUNC(sdk, type, func, symbol) \
type func = getFunction<type>(&sdk, symbol); \
if (func == nullptr) \
{ \
qDebug()<<"fun is null: "<< symbol; \
return 0; \
}
template <typename T>
T getFunction(QLibrary *lib, const char *func)
{
T f = (T)lib->resolve(func);
if (f == nullptr)
{
return nullptr;
}
return f;
}
```
使用
``` C++
QString strSDKName = QString("%1%2%3").arg(LIB_DIR_PATH).arg(LIB_NAME).arg(FILE_DLL_EXT);
QLibrary library(strSDKName);
bool bLoad = library.load();
// 调用方法1
GET_FUNC(library, pRunFunctionFun, runFun, "runFunction");
int nRet = runFun("addNum", request, response);
qDebug() << "add Resut:" << nRet << response.m_strData;
```
反射调用
``` C++
int runFunction(const char *funName, const DS_Request &request, DS_Request &response)
{
Internal::SDKCoreImpl m_pCoreImpl;
int nRet = -1;
QMetaObject::invokeMethod(&m_pCoreImpl, funName,
Qt::DirectConnection,
Q_RETURN_ARG(int, nRet),
Q_ARG(DS_Request, request),
Q_ARG(DS_Request&,response));
return nRet;
}
```
## 总结
关于详细介绍以及使用过程,可以关注微信公众号: devstone, 获取查看
没有合适的资源?快使用搜索试试~ 我知道了~
QLibrary 加载动态库详细用法,封装调用方法,使用简单快速、方法使用 Qt 反射更快捷
共16个文件
h:4个
pro:3个
md:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 29 浏览量
2023-08-23
17:31:21
上传
评论
收藏 19KB ZIP 举报
温馨提示
QLibrary 加载动态库详细用法,封装调用方法,使用简单快速、方法使用 Qt 反射更快捷
资源推荐
资源详情
资源评论
收起资源包目录
DynamicLibLoadDemo-master.zip (16个子文件)
DynamicLibLoadDemo-master
Doc
doc.md 0B
LICENSE 34KB
Src
App
App.pro 154B
main.cpp 2KB
Libs
SDKCore.h 240B
SDKCore.cpp 494B
SDKCoreImpl.h 321B
SDKStruct.h 312B
SDKCore_global.h 144B
SDKCoreImpl.cpp 698B
Libs.pro 251B
Example
Example.md 0B
DynamicLibLoadDemo.pri 742B
.gitignore 270B
README.md 2KB
DynamicLibLoadDemo.pro 101B
共 16 条
- 1
资源评论
云哲-吉吉2021
- 粉丝: 3321
- 资源: 1130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功