Q_DECLARE_INTERFACE 用于插件创建到处都抛出错误
Q_DECLARE_INTERFACE for plugin creation throws errors all over
环境:
- 框架:Qt 5.12.9
- 编译器:MSVC 15.9.28307.1234 (x64)
- 调试器:CDB 10.017763.132 (x64)
- 标准:C++11
- 编辑器:Qt Creator 4.12.2
- OS: Win10 企业版 1809
我想开发一个可以通过插件扩展的应用程序。因此,我创建了一个标准库项目,我想在其中定义插件接口。然后该库应由主应用程序及其插件使用。
在官网上看到了Qt插件系统的介绍,并通过duckduckgo-ing寻求帮助,但一直卡在以下错误中:
- 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:语法错误:'string'
这是代码:
#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 等人的支持
环境:
- 框架:Qt 5.12.9
- 编译器:MSVC 15.9.28307.1234 (x64)
- 调试器:CDB 10.017763.132 (x64)
- 标准:C++11
- 编辑器:Qt Creator 4.12.2
- OS: Win10 企业版 1809
我想开发一个可以通过插件扩展的应用程序。因此,我创建了一个标准库项目,我想在其中定义插件接口。然后该库应由主应用程序及其插件使用。
在官网上看到了Qt插件系统的介绍,并通过duckduckgo-ing寻求帮助,但一直卡在以下错误中:
- 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:语法错误:'string'
这是代码:
#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 等人的支持