7AA7 / 博客
登录 / 注册 返回首页

用 Qt6 + C++ 打造你的第一个 7AA7 工具箱插件

祁工 · 2026-10-12

为什么写 7AA7 插件

7AA7 工具箱本身只提供“外壳”与统一的能力入口,真正解决具体问题的功能,由插件(Plugin)承载。只要你的想法能用 C++ 表达,就能做成一款被千万用户一键调用的工具。本文带你从零跑通第一个插件。

环境准备

插件接口骨架

所有插件都实现同一个纯虚接口。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)。注意:未签名的插件无法被加载。签名流程:

  1. 用开发者证书对 dll 做 Authenticode 签名;
  2. 将证书指纹写入插件的 manifest.json;
  3. 提交到 7AA7 后台做二次校验,通过后获得正式发布资格。

调试技巧

把插件目录软链到工具箱的 plugins/dev/,开启 “开发者模式” 即可热加载,省去反复安装。控制台会打印 HostApi 调用栈,定位异常很快。

小结

一个插件 = 一个接口实现 + 一次签名。先把骨架跑通,再逐步叠加命令与 UI,是最高效的起步方式。

插件开发
# C++# Qt6# 插件开发
🔁 0

评论(0)

还没有评论,来抢沙发。