容器进程(QQExternal)

容器进程的意义在于这个进程并没有指定的功能,他只是负责来加载其他模块(dll),相对于普通进程的优势就是,不用单独去做一个进程,在VS中我们只用关注实现逻辑就好,当需要这个功能单独运行在一个进程中的时候,我们可以方便的用容器进程去加载他,类似于Windows自带的rundll功能。但是我们的容器进程可以有更强大的辅助功能,可以提供进程间通信接口,让多进程编程更加容易。如果关注过QQ的QQExternal进程,就会发现这个进程往往有多个,而且个数不定,这个就是QQ的容器进程,他可能会运行web的模块也可能是其他插件模块。

一个简单的容器进程,非常好实现,一个main函数,解析main参数,因为对要加载的dll接口参数变成了从命令行传入。解析命令行参数的dll地址,加载该dll,再将剩余的参数传入dll的固定接口。以为我们是一个容器进程,所以对dll的调用接口有要求,可以固定为void Start(std::vector<std::string> param); 这样的,方便传入多个参数,当然这块可以根据情况设计,但是其他需要被加载的dll模块导出的接口需要遵循这同一个规则。

 下面是一个用QT工程实现的基本的容器进程模块:

#include <QApplication>
#include <QLibrary>
typedef void(*StartFunc)(QStringList param);
int main(int argc, char *argv[])
{
	// 开启高DPI支持
	QCoreApplic
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值