Qt-Jambi 冗长,尤其是 QtDynamicMetaObjectPrivate

Posted

技术标签:

【中文标题】Qt-Jambi 冗长,尤其是 QtDynamicMetaObjectPrivate【英文标题】:Qt-Jambi verbosity, particularly QtDynamicMetaObjectPrivate 【发布时间】:2013-10-02 10:27:09 【问题描述】:

在启动我的 QtJambi 程序时,我在控制台 (stderr) 上收到很多此类消息:

QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[1]="actionNew()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[2]="showAnalysisForm()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[3]="actionOpen()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[4]="actionSave()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[5]="actionSaveAs()"

函数名称(actionNew 等)是我程序中的 Qt 插槽。但是,为什么我会看到这些消息,以及如何摆脱它们(这样它们就不会隐藏重要消息)?

我已经安装了一个QMessageHandler(我认为相当于qInstallMsgHandler),它现在给了我一些警告消息,但是上面的消息没有通过我的消息处理程序。

【问题讨论】:

我记得没见过这样的。你用的是占碑后备箱,还是什么版本?你能贴一些简单的例子吗? 【参考方案1】:

这似乎是调试的残余代码。在 .../qt-jambi-qtjambi-community/src/cpp/qtjambi/qtdynamicmetaobject.cpp 你会发现:

for (int i=0; i<m_method_count + m_signal_count; ++i) 
    jobject lr_string = env->GetObjectArrayElement(original_signatures, i);
    m_original_signatures[i] = qtjambi_to_qstring(env, (jstring) lr_string);
fprintf(stderr, "QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(%p) initialize q->d=%p m_original_signatures[%d]=\"%s\"\n", this, &q->d, i, qPrintable(m_original_signatures[i]));
#ifdef QTJAMBI_DEBUG_LOCALREF_CLEANUP
    env->DeleteLocalRef(lr_string);
#endif

也许新的下载会解决这个问题。或者,您可以尝试删除 fprintf() 自己重建。

【讨论】:

感谢您的回答,很抱歉回复时间过长。我尝试下载 4.8.5-beta1 但崩溃了(可能是 ABI 与系统库不兼容;如果没有调试符号就无法说明太多)。自建会对此有所帮助,但对部署没有帮助。也许在 qtjambi 版本中捆绑所有动态链接库是可行的方法? 记录在案:在自行构建了 4.8.5 的调试版本和最新的 qtcommunity 代码后,我仍然会收到这些消息。

以上是关于Qt-Jambi 冗长,尤其是 QtDynamicMetaObjectPrivate的主要内容,如果未能解决你的问题,请参考以下文章

Lombok

lombok 注解

plugin--Lombok

Lombok插件

扩大冗长活动序列的最佳方式是啥?

lombok效率神奇使用