为什么写 7AA7 插件
7AA7 工具箱本身只提供“外壳”与统一的能力入口,真正解决具体问题的功能,由插件(Plugin)承载。只要你的想法能用 C++ 表达,就能做成一款被千万用户一键调用的工具。本文带你从零跑通第一个插件。
环境准备
- Qt 6.11.1(官方唯一认证版本,避免 ABI 漂移)
- MinGW GCC 13.1 x64 工具链
- 7AA7 工具箱开发者证书(用于发布签名,见下文)
- 一份
I7AA7Plugin头文件(来自开发者 SDK)
插件接口骨架
所有插件都实现同一个纯虚接口。Host 在加载时通过 Qt 的插件元系统拿到你的实现:
#include "I7AA7Plugin.h"
class DemoPlugin : public I7AA7Plugin {
Q_OBJECT
Q_PLUGIN_METADATA(IID "com.7aa7.toolbox.I7AA7Plugin/2.1")
Q_INTERFACES(I7AA7Plugin)
public:
QString name() const override { return "示例插件"; }
QString version() const override { return "1.0.0"; }
void activate(I7AA7HostApi* host) override;
void deactivate() override;
};
最小可用插件
在 activate 里向宿主注册一个命令,用户就能在工具箱里看到并调用它:
void DemoPlugin::activate(I7AA7HostApi* host) {
m_host = host;
host->registerCommand("demo.hello", [](const QVariantMap& args){
return QVariantMap{{"msg", "Hello from 7AA7 plugin!"}};
});
}
编译与签名
编译产物是一个 .dll(Windows)。注意:未签名的插件无法被加载。签名流程:
- 用开发者证书对 dll 做 Authenticode 签名;
- 将证书指纹写入插件的
manifest.json; - 提交到 7AA7 后台做二次校验,通过后获得正式发布资格。
调试技巧
把插件目录软链到工具箱的 plugins/dev/,开启 “开发者模式” 即可热加载,省去反复安装。控制台会打印 HostApi 调用栈,定位异常很快。
小结
一个插件 = 一个接口实现 + 一次签名。先把骨架跑通,再逐步叠加命令与 UI,是最高效的起步方式。

评论(0)
还没有评论,来抢沙发。
请 登录 后参与评论。