无法将包含QObject类的静态库包含到Cascades项目中

时间:2013-08-21 08:18:29

标签: qt blackberry-10 qmake blackberry-cascades moc

我在基于Qt的新BB10平台上工作。

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

当我尝试在我的Cascades项目中包含这个库时,我在构建时遇到了这些错误:

  
      
  • 未定义的引用   com :: vasco :: digipass :: sdk :: utils :: qrcodescanner :: MyClass :: staticMetaObject
  •   
  • 未定义的引用   com :: vasco :: digipass :: sdk :: utils :: qrcodescanner :: MyClass :: newQRCodeDetected(QString)
  •   
  • 未定义的引用   COM ::瓦斯科::动态密码器:: SDK :: utils的:: qrcodescanner :: MyClass的:: staticMetaObject   外部位置:   c:\ Developer \ bbndk \ target_10_1_0_2342 \ qnx6 \ usr \ include \ qt4 \ QtCore \ qobject.h
  •   
  • 未定义的引用   COM ::瓦斯科::动态密码器:: SDK :: utils的:: qrcodescanner :: MyClass的:: staticMetaObject   外部位置:   c:\ Developer \ bbndk \ target_10_1_0_2342 \ qnx6 \ usr \ include \ qt4 \ QtDeclarative \ qdeclarative.h
  •   
  • 未定义的引用   COM ::瓦斯科::动态密码器:: SDK :: utils的:: qrcodescanner :: MyClass的:: staticMetaObject   外部位置:   c:\ Developer \ bbndk \ target_10_1_0_2342 \ qnx6 \ usr \ include \ qt4 \ QtDeclarative \ qdeclarative.h
  •   
  • 对vtable的未定义引用   com :: vasco :: digipass :: sdk :: utils :: qrcodescanner :: MyClass
  •   
  • 未定义   参考vtable for   COM ::瓦斯科::的Digipass :: SDK :: utils的:: qrcodescanner :: MyClass的
  •   

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我在源文件和头文件上运行了qmake但由于某种原因它没有生成任何moc文件。

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

相关问题