В настоящее время я работаю над созданием игры Cocos2d-x для платформы BB10 с использованием образца BBTemplateProject, предоставленного Cocos2dx. Я новичок в программировании на C++, и текущая игра представляет собой порт java-проекта, над которым я работал некоторое время. Чтобы сохранить игровые данные (оценки, некоторые настройки и т. Д.), Я намерен использовать библиотеку QtSQl, которую предоставляет BB10. Я успешно запускал образец кода Qtsql в примере приложения Cascades и отлично работает. Однако интеграция того же кода в мой проект Cocos2dx BB10 просто не работает. Я использую IDE Momentics и добавили qt4, QtCore, QtDeclarative, дорожки/символы к проекту, но по-прежнему Получать следующие ошибкиКак импортировать и использовать QObject в приложении на базе BB10 Cocos2D
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.
Заранее благодарен.
Edit:
Вот, мой прогресс до сих пор в попытке использовать QtSql для взаимодействия с базой данных. QtSQl требует QtCore, который содержит QObject выше. До сих пор мне не удалось успешно интегрировать библиотеку QtCore.
Я сделал следующее.
Добавлена / USR/включать/qt4 и/USR/включать/QtCore и/USR/включать/QtSql к моему включают список, используя следующую процедуру
Щелкните правой кнопкой мыши над проектом в Project Explorer, и выберите Свойства
- Разверните дерево на C/C++ Общие/Paths и символы
- Изменение конфигурации в кадре Контуры и символы, чтобы [Все конфигурации]
- Нажмите Включает метку и выберите GNU C в списке «Языки» (или сделать это для каждого языка).
- Нажмите кнопку Добавить ... и введите $ {QNX_TARGET}/USR/включать/qt4 и нажмите OK
Нажмите кнопку Добавить ... и введите $ {QNX_TARGET}/USR/включать/qt4/QtCore и нажмите OK
Используется функция библиотеки Momentics IDE для добавления в проект как QtCore, так и QtSql. RightClick-> configure-> добавить библиотеку и стандартную библиотеку платформы BlackBerry. Библиотека успешно добавлена.
Я в основном выполнил шаги, описанные в этой статье Adding QtCore Library in blackberry 10 sdk. Но теперь получите эту ошибку.
\win32\x86\usr\bin\ntoarm-ld: cannot find -lQtCore
ОП в этом сообщении упоминает решение «некоторых проблем с компоновщиками», но не упоминает, как это сделать. Я также попытался изменить файл 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>
Ошибка по-прежнему сохраняется. Как решить эту ошибку «компоновщика» или библиотеки? Большое спасибо.
Hi Kernald, Спасибо за подробный ответ, я обязательно проведу ссылку, которую вы указали при ссылке на QtCore .so и т. д. Надеюсь, он решает мою неопределенную ссылочную проблему. Однако вы поднимаете важный параметр, который я хотел бы удвоить, используя библиотеку SQLite. Как использовать библиотеку SQLite на bb10? Ранее я предполагал, что единственный способ использовать sqlite на BB10 - использовать QtSQL. Эта ? https://developer.blackberry.com/cascades/reference/bb__data__sqldataaccess.html? P.S Я не использую одно и то же приложение на Android и BB10. Версия Android была написана в cocos2d для android, java-порт. –
Ну, я думал об этом: http://www.sqlite.org/capi3ref.html, который является «официальной» библиотекой SQLite (я также добавил ссылку в свой ответ, чтобы избежать путаницы). Другие - в основном обертки вокруг него или перекодируют одни и те же функции с более полным API/абстракцией. Преимущество состоит в том, чтобы быть полностью кросс-платформенным. Однако, если вы планируете использовать этот код только на BB10, SqlDataAccess или QtSql будет лучшим выбором, я думаю. По крайней мере, проще в использовании. Я не знал о SqlDataAccess. Я думаю, вам будет нужно сравнить его с QtSql и выбрать то, что вы предпочитаете. –
Ваша ссылка звучит как хороший вариант. Однако я полагаю, что интеграция с BB10 может стать еще одним перетягиванием каната. Из образцов, которые Iv видел с использованием SqlDataAcess, работает в соединении с QtSql, а не независимо от работы (http://developer.blackberry.com/cascades/reference/bb__data__sqldataaccess.html). Говоря все, есть несколько ценных Q-функций (e.g QString), которые идут вместе с успешным импортом/интеграцией библиотек QtCore/Qtsql, которые мотивируют выбор перехода с QtSql. –