微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Q_DECLARE_INTERFACE用于创建插件会引发错误

如何解决Q_DECLARE_INTERFACE用于创建插件会引发错误

环境:

  • 框架:Qt 5.12.9
  • 编译器:MSVC 15.9.28307.1234(x64)
  • 调试器:CDB 10.017763.132(x64)
  • 标准:C ++ 11
  • 编辑器:Qt Creator 4.12.2
  • 操作系统:Win10 Enterprise 1809

我想开发一个可以通过插件扩展的应用程序。因此,我创建了一个标准库项目,我想在其中定义插件接口。然后,该库应由主应用程序及其插件使用。

我在官方网站上阅读了有关Qt插件系统的信息,并希望通过duckduckgoing获得帮助,但我仍然遇到以下错误

  • vccplugin.h:16:32:错误:预期参数声明符 vccplugin.h:14:23:注意:从宏“ VccPlugin_iid”扩展
  • vccplugin.h:16:32:错误:预期为')' vccplugin.h:14:23:注意:从宏'VccPlugin_iid'扩展 vccplugin.h:16:20:注意:要匹配此'('
  • vccplugin.h:16:1:错误:C ++要求所有声明都使用类型说明符
  • 内部版本问题:C2059:语法错误:“字符串”

这是代码

#ifndef VCCPLUGIN_H
#define VCCPLUGIN_H

#include "VccPluginInterface_global.h"

class VCCPLUGININTERFACE_EXPORT VccPlugin
{
public:
    VccPlugin();
    ~VccPlugin();
    void DoeEenTwuk();
};

#define VccPlugin_iid "automation.general.vcc.interface"

Q_DECLARE_INTERFACE(VccPlugin,VccPlugin_iid);

#endif // VCCPLUGIN_H

还请注意,我在C ++和Qt方面经验不足。

非常感谢您的帮助, 谢谢

解决方法

我发现了问题。问题是编译器找不到宏,所以我只需要添加:

#include <QtPlugin>

由于Q_DECLARE_INTERFACE是在QtPlugin中定义的。您的示例未导入QtPlugin,但可能是由另一个导入(可能是QMainWindow)隐式导入的。

如果我遇到类似“如果找不到符号Q_DECLARE_INTERFACE”的错误,那会更简单。尤其是因为我在这个话题上比较沮丧。

感谢您对@NgocMinhNguyen和其他人的支持

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。