0

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

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

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

  • 对 com::vasco::digipass::sdk::utils::qrcodescanner::MyClass::staticMetaObject 的未定义引用
  • 对 com::vasco::digipass::sdk::utils::qrcodescanner::MyClass::newQRCodeDetected(QString) 的未定义引用
  • 对 com::vasco::digipass::sdk::utils::qrcodescanner::MyClass::staticMetaObject 外部位置的未定义引用:c:\Developer\bbndk\target_10_1_0_2342\qnx6\usr\include\qt4\QtCore\qobject.h
  • 对 com::vasco::digipass::sdk::utils::qrcodescanner::MyClass::staticMetaObject 外部位置的未定义引用:c:\Developer\bbndk\target_10_1_0_2342\qnx6\usr\include\qt4\QtDeclarative\qdeclarative.h
  • 对 com::vasco::digipass::sdk::utils::qrcodescanner::MyClass::staticMetaObject 外部位置的未定义引用:c:\Developer\bbndk\target_10_1_0_2342\qnx6\usr\include\qt4\QtDeclarative\qdeclarative.h
  • com::vasco::digipass::sdk::utils::qrcodescanner::MyClass 对 vtable 的未定义引用
  • com::vasco::digipass::sdk::utils::qrcodescanner::MyClass 对 vtable 的未定义引用

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

4

2 回答 2

1

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

于 2013-08-21T08:59:02.620 回答
0

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

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

于 2013-08-21T11:51:29.540 回答