黑莓在无头应用程序中使用QML中的C ++类:未定义引用`bb :: device :: VibrationController :: staticMetaObject'

时间:2015-05-20 02:45:18

标签: blackberry qml headless

我已经在BB工作了几周,并且遇到了很多麻烦。其中一些已得到解决,一些人没有得到论坛的支持。 现在我有一个很大的麻烦,谷歌搜索无法找到答案。 如果有人能提供帮助,我将不胜感激。

这是一个简单的案例,对我来说是个大问题:

  1. 使用Momentics创建无头应用。两个项目将生成HeadlessApp和HeadlessAppService。 没有修改,这段代码运行良好。

  2. 我按照this link在HeadlessAppService中使用VibrationController 将以下代码添加到HeadlessAppService的main.cpp

  3. #include <bb/device/VibrationController>

    using namespace bb::device;

    然后添加qmlRegisterType,如下所示

    Q_DECL_EXPORT int main(int argc, char **argv)
    {
    
       Application app(argc, argv);
    
       qmlRegisterType<VibrationController>("bb.vibrationController", 1, 0, "VibrationController");
       ApplicationUI appui;
       return Application::exec();
    }
    
    1. 要确认这个新代码,我只需右键单击项目,然后选择Build Project。 砰!!!我收到很多错误,我无法理解。 (红线是错误的)
    2. 08:44:30 **** Incremental Build of configuration Device-Debug for project headlessTest ****
      make -j4 Device-Debug 
      make -C .//translations -f Makefile update
      make[1]: Entering directory 'D:/BB-dev/momentics-workspace/headlessTest/translations'
      C:/bbndk/host_10_3_1_12/win32/x86/usr/bin/lupdate headlessTest.pro
      Updating 'headlessTest.ts'...
          Found 2 source text(s) (0 new and 2 already existing)
      make[1]: Leaving directory 'D:/BB-dev/momentics-workspace/headlessTest/translations'
      make -C .//translations -f Makefile release
      make[1]: Entering directory 'D:/BB-dev/momentics-workspace/headlessTest/translations'
      C:/bbndk/host_10_3_1_12/win32/x86/usr/bin/lrelease headlessTest.pro
      Updating 'D:/BB-dev/momentics-workspace/headlessTest/translations/headlessTest.qm'...
          Generated 0 translation(s) (0 finished and 0 unfinished)
          Ignored 2 untranslated source text(s)
      make[1]: Leaving directory 'D:/BB-dev/momentics-workspace/headlessTest/translations'
      make -C ./arm -f Makefile debug
      make[1]: Entering directory 'D:/BB-dev/momentics-workspace/headlessTest/arm'
      make -f Makefile.Debug
      make[2]: Entering directory 'D:/BB-dev/momentics-workspace/headlessTest/arm'
      qcc -Vgcc_ntoarmv7le -lang-c++ -Wl,-rpath-link,C:/bbndk/target_10_3_1_995/qnx6/armle-v7/lib -Wl,-rpath-link,C:/bbndk/target_10_3_1_995/qnx6/armle-v7/usr/lib -Wl,-rpath-link,C:/bbndk/target_10_3_1_995/qnx6/armle-v7/usr/lib/qt4/lib -Wl,-rpath-link,C:/bbndk/target_10_3_1_995/qnx6/armle-v7/usr/lib/qt4/lib -o o.le-v7-g/headlessTest o.le-v7-g/.obj/applicationui.o o.le-v7-g/.obj/main.o o.le-v7-g/.obj/moc_applicationui.o    -LC:/bbndk/target_10_3_1_995/qnx6/armle-v7/usr/lib/bb1 -LC:/bbndk/target_10_3_1_995/qnx6/armle-v7/lib -LC:/bbndk/target_10_3_1_995/qnx6/armle-v7/usr/lib -LC:/bbndk/target_10_3_1_995/qnx6/armle-v7/usr/lib/qt4/lib -LC:/bbndk/target_10_3_1_995/qnx6//usr/lib/qt4/lib -lbb -lbbsystem -lbbcascades -lQtDeclarative -lQtScript -lQtSvg -lQtSql -lsqlite3 -lz -lQtXmlPatterns -lQtGui -lQtNetwork -lsocket -lQtCore -lm -lbps 
      o.le-v7-g/.obj/main.o: In function `int qmlRegisterType<bb::device::VibrationController>(char const*, int, int, char const*)':
      **c:/bbndk/target_10_3_1_995/qnx6/usr/include/qt4/QtDeclarative/qdeclarative.h:191: undefined reference to `bb::device::VibrationController::staticMetaObject'
      o.le-v7-g/.obj/main.o: In function `QDeclarativeElement':
      **c:/bbndk/target_10_3_1_995/qnx6/usr/include/qt4/QtDeclarative/qdeclarativeprivate.h:87: undefined reference to `bb::device::VibrationController::VibrationController(QObject*)'
      o.le-v7-g/.obj/main.o:(.data.rel.ro._ZTVN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE[_ZTVN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE]+0x8): undefined reference to `bb::device::VibrationController::metaObject() const'
      o.le-v7-g/.obj/main.o:(.data.rel.ro._ZTVN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE[_ZTVN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE]+0xc): undefined reference to `bb::device::VibrationController::qt_metacast(char const*)'
      o.le-v7-g/.obj/main.o:(.data.rel.ro._ZTVN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE[_ZTVN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE]+0x10): undefined reference to `bb::device::VibrationController::qt_metacall(QMetaObject::Call, int, void**)'
      o.le-v7-g/.obj/main.o:(.data.rel.ro._ZTIN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE[_ZTIN19QDeclarativePrivate19QDeclarativeElementIN2bb6device19VibrationControllerEEE]+0x8): undefined reference to `typeinfo for bb::device::VibrationController'
      o.le-v7-g/.obj/main.o: In function `~QDeclarativeElement':
      **c:/bbndk/target_10_3_1_995/qnx6/usr/include/qt4/QtDeclarative/qdeclarativeprivate.h:91: undefined reference to `bb::device::VibrationController::~VibrationController()'
      **c:/bbndk/target_10_3_1_995/qnx6/usr/include/qt4/QtDeclarative/qdeclarativeprivate.h:91: undefined reference to `bb::device::VibrationController::~VibrationController()'cc: C:/bbndk/host_10_3_1_12/win32/x86/usr/bin/ntoarm-ld caught signal 1
      **    Makefile.Debug:103: recipe for target 'o.le-v7-g/headlessTest' failed
      make[2]: *** [o.le-v7-g/headlessTest] Error 1make[2]: Leaving directory 'D:/BB-dev/momentics-workspace/headlessTest/arm'
      make[1]: *** [debug] Error 2
      Makefile:50: recipe for target 'debug' failed
      make: *** [Device-Debug] Error 2make[1]: Leaving directory 'D:/BB-dev/momentics-workspace/headlessTest/arm'
      mk/cs-base.mk:31: recipe for target 'Device-Debug' failed
      08:44:31 Build Finished (took 1s.47ms)

      错误行标有**(2星)。 我放弃了! 为什么添加简单代码会产生问题?请帮我! 非常感谢!

1 个答案:

答案 0 :(得分:0)

我找到了理由。我忘了将LIBS + = -lbbdevice添加到pro文件中。

相关问题