2013-08-21 102 views
0

我在基于Qt的新BB10平台上工作。无法将包含QObject类的静态库包含到Cascades项目中

我有一个静态库项目,它定义了一个QObject类(基本上这个类发送信号并有几个插槽)。该项目编译好,并为我提供了一个很好的libwhathever.a文件

当我尝试包括这个库在我的瀑布项目中,我得到这些错误时建设:

  • 未定义的引用COM ::瓦斯科:: digipass :: sdk :: utils :: qrcodescanner :: MyClass :: staticMetaObject
  • undefined reference to com :: vasco :: digipass :: sdk :: utils :: qrcodescanner :: MyClass :: newQRCodeDetected(QString)
  • undefined refe伦斯到 COM ::瓦斯科::动态密码器:: SDK :: utils的:: qrcodescanner :: MyClass的:: staticMetaObject 外部位置: C:\开发\ bbndk \ target_10_1_0_2342 \ QNX6的\ usr \包括\ QT4 \ QtCore \的QObject .H
  • 未定义参照 COM ::瓦斯科::的Digipass :: SDK :: utils的:: qrcodescanner :: MyClass的:: staticMetaObject 外部位置: C:\开发\ bbndk \ target_10_1_0_2342 \ QNX6 \ USR \包括\ QT4 \ QtDeclarative \ qdeclarative.h
  • 未定义参照 COM ::瓦斯科::的Digipass :: SDK :: utils的:: qrcodescanner :: MyClass的:: staticMetaObject 外部位置: C:\开发\ bbndk \ target_10_1_0_2342 \ QNX6 \ USR \包括\ QT4 \ QtDeclarative \ qdeclarative.h
  • 未定义参考V表为 COM ::瓦斯科::的Digipass :: SDK :: utils的:: qrcodescanner :: MyClass的
  • 未定义 参考V表为 COM ::瓦斯科::动态密码器:: SDK :: utils的:: qrcodescanner :: MyClass的

我怀疑我想念编译步骤,其中Q_OBJECT宏处理。 我在正确的轨道上吗? 我听说过mocqmake,但我不知道如何以及何时在构建过程中使用它们。

回答

1

简单的经验法则是当您使用Q_OBJECT引入一个新类时,重新运行qmake,因为它会生成moc文件。尝试干净,然后重新运行qmake,然后再次构建项目,它应该解决它。

0

我对我的源代码和头文件运行qmake,但由于某种原因它没有生成任何moc文件。

我实际上只是通过在定义Q_OBJECT的头文件上运行moc来解决我的问题。它生成我需要的moc文件,并且我的未定义引用消失。

+0

QMake应该运行您的项目文件,而不是来源。它会在每个必要的标题上运行moc。 –

+0

是的没错,在运行qmake之前我实际上做了一个简单的.pro文件。最后,我所需要的就是在一个头文件中调用moc,其余的编译都是通过一个ant脚本完成的 – Ika