我目前正在使用 Cocos2dx 提供的 BBTemplateProject 示例为 BB10 平台构建 Cocos2d-x 游戏。我是 C++ 编程的新手,目前的游戏是我已经工作了一段时间的 java 项目的一个端口。为了保存游戏数据(分数、一些设置等),我打算使用 BB10 提供的 QtSQl 库。我已经在示例 Cascades 应用程序中成功运行了一些示例 Qtsql 代码,并且运行良好。但是,将相同的代码集成到我的 Cocos2dx BB10 项目中是行不通的。我使用momentics IDE并已将qt4、QtCore、QtDeclarative、路径/符号添加到项目中,但仍然收到以下错误
undefined reference to `QObject::QObject(QObject*)'
undefined reference to `vtable
undefined reference to `QSqlDatabase::defaultConnection'
.. and a bunch of other Q- related object errors.
在这里阅读 Qobject http://developer.blackberry.com/cascades/reference/moc.html后, 我怀疑 MOC 编译器没有引用引用或类似问题。此外,鉴于相同的代码在 Momentics IDE 中集成到自动生成的级联项目中时运行良好,我被认为是某种 moc 编译器问题。鉴于我对 C++ 开发还很陌生,我仍然无法弄清楚如何将适当的 qmake 文件规则添加到 Momentics IDE 以识别 Qobjects 。这方面需要帮助。
肯定会感谢经验丰富的 c++ 开发人员提供的有关如何解决此问题的任何指示,或者在 cocos2dx blackberry 10 项目中存储数据的更好方法。
提前致谢。
编辑 :
这是迄今为止我在尝试使用 QtSql 进行数据库交互方面的进展。QtSQl 需要 QtCore,其中包含上面的 QObject。到目前为止,我一直无法成功集成 QtCore 库。
我做了以下事情。
使用以下过程将 /usr/include/qt4 和 /usr/include/QtCore 和 /usr/include/QtSql 添加到我的包含列表中
在 Project Explorer 中右键单击您的项目并选择 Properties
- 将树扩展为 C/C++ 常规/路径和符号
- 将路径和符号框架中的配置更改为 [所有配置]
- 单击 Includes 标记并在 Languages 列表中选择 GNU C(或对每种语言都执行此操作)。
- 单击添加...并键入 ${QNX_TARGET}/usr/include/qt4 并按确定
单击添加...并键入 ${QNX_TARGET}/usr/include/qt4/QtCore 并按确定
使用 Momentics IDE 添加库函数将 QtCore 和 QtSql 添加到项目中。右键单击->配置->添加库和标准 BlackBerry 平台库。该库已成功添加。
我基本上遵循了在黑莓 10 sdk 中添加 QtCore 库的相关文章中详述的步骤。但是现在得到这个错误。
\win32\x86\usr\bin\ntoarm-ld: cannot find -lQtCore
那篇文章中的 OP 提到了解决“一些链接器问题”,但没有提到如何解决。我还尝试修改 bar-descriptor.xml 文件添加以下行
<env var="LD_LIBRARY_PATH" value="app/native/lib:/usr/lib/qt4/lib"/>
<asset path="${QNX_TARGET}\${CPUVARDIR}usr\lib\qt4\lib\libQtCore.so" type="Qnx/Elf">lib/libQtCore.so.4</asset>
错误仍然存在。如何解决此“链接器”或 library-no-found 错误?非常感谢。