我为QCanBus
写了一个自定义插件,它只是socketcan插件的一个副本,但已被重命名,并且标识符已调整为该新名称。
我这样做是为了在更改插件之前先让插件得到认可。
我将qmake项目更改为这样:
TEMPLATE = lib
TARGET = qtcopysocketcanbus
CONFIG += plugin
QT = core serialbus
HEADERS += \
copysocketcanbackend.h
SOURCES += \
main.cpp \
copysocketcanbackend.cpp
DISTFILES = plugin.json
并像这样添加plugin.json
:
{
"Key": "copysocketcan"
}
然后我将socketcan
,copysocketcan
和main.cpp
中的其他所有内容从copysocketcan.cpp
重命名为copysocketcan.h
。
构建项目时,我得到了* .so文件,该文件已放入目标中的$QT_PLUGIN_PATH/canbus/
。
但是,快速入门显示,qt仅列出了安装随附的插件,而不是我添加的自定义插件。
我尝试将QLoggingCategory::setFilterRules(QStringLiteral("qt.canbus* = true"));
作为代码的第一行,希望获得更多的调试输出,但是我只能得到自己的应用程序正在生成的调试输出。实际的QCanBus
没有输出。
所以我的问题是
qt.canbus
启用调试输出?我必须为此使用调试配置来构建QT吗?答案 0 :(得分:0)
通过有帮助的评论,我能够调试问题。评论者建议使用QT_DEBUG_PLUGINS
调试插件调用。这导致出现一条错误消息,清楚地表明,我正在尝试加载的插件是因为不是插件,并且无法提取插件元数据。
在这些消息帮助之后,进行了一些谷歌搜索。
问题1的答案是:
是的,您显然具有通过调试信息进行构建的QT,以获取实际的日志输出。
就我而言,我使用--force-debug-info
对于第二个问题,我的方法的确是合理的,因为对问题3的回答表明,必须在{内使用moc
宏,以便尽快包含Q_OBJECT
文件。 {1}}文件,而不是在单独的标头中(canbus插件就是这种情况)。您可以了解有关here