Using C++ in QML classes in app without head: refers to 'bb::device:VibrationController:staticMetaObject' the undefined

Hi, I've been weeks of work on the BB and had a lot of problems. Some of them have been resolved, some were not without the support of the forum.

Now I have a great difficulty that I can't find answer by Googling.

I am grateful to some body can help.

Here's a simple case that make the big problem for me:

1. create an app without head with Momentics. 2 project will be generated HeadlessApp and HeadlessAppService.

Without modification, this code works well.

2. I'm link below to use VibrationController in HeadlessAppService: https://developer.blackberry.com/native/documentation/dev/integrating_cpp_qml/index.html#usingcclass...

below the code has been added:

-Add codes below to main.cpp HeadlessAppService

#include 
using namespace bb::device;

then add qmlRegisterType as below

Q_DECL_EXPORT int main(int argc, char **argv)
{

   Application app(argc, argv);

   qmlRegisterType("bb.vibrationController", 1, 0, "VibrationController");
   ApplicationUI appui;
   return Application::exec();
}

3. to confirm the new code, I just right click on the project and select build project.

Bang! I got several error I don't understand. (red lines are errors)

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(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)

I give up!

Why adding simple code can be a problem? Please help me!

Thank you very much!

You must add this code into main.cpp to your HeadlessApp, not HeadlessAppService. Your spare part cannot run any UI stuff, trying to save an object any for QML is part of the things in the user interface.

But anyway, reading your newspaper from the console, you seem to put in the right place anyway. Did you add this to your headlessTest.pro file:
LIBS +=-lbbdevice

Tags: BlackBerry Developers

Similar Questions

  • Using C++ in QML classes: need for Clarification

    I have read the document using classes in QML C++ and understood that we must call qmlRegisterType before using C++ in QML classes.

    But I found that some (or all?) of the classes can be used in QML without call qmlRegisterType in advance.

    Example of

    import bb.device 1.0
    
    Page {
      attachedObjects: [VibrationController {id: qmlvib}]
      Container{
           Button {
                        text: "Test vibrate"
                        horizontalAlignment: HorizontalAlignment.Center
                        onClicked: qmlvib.start(100,100)
                       }
        }
    }
    

    I also found the SensorDemo project using many classes of QML sensor final qmlRegisterType<>(). But it does not call qmlRegisterType<>for VibrationController (?).

    I wish I had a few questions:

    1. How will I know which classes can be used in QML without qmlRegisterType<>()? Is there a list or the rule to help me know?

    2. what should I look at to decide using C++ class in QML directly (without qmlRegisterType<>(()) or with qmlRegisterType<>(): as the performance, memory management,...?

    3. If you can choose to use the C++ in QML class directly (without qmlRegisterType<>(()), BB shoud put it in the paper?

    Sorry for the many questions. I'm just a beginner on BB.

    Thank you very much!

    (1) I think that some classes are pre-registered. If it works without adding it yourself: looks like it was a.
    (2) I don't think that there is a performance issue with the help of registerType
    (3) No, there is not, just of the classes that are recorded automatically by the system.

  • App without head: how to check the status

    1. I read this on the BB site:

    Criticism

    Process that must be running at all times (for example, system processes)

    In the foreground

    Processes that are running in the foreground

    Background

    Processes that run in the background

    Stop

    Process involved in RAM without running

    The question is can we write the code to check the States of the app to trigger certain activities?

    I also want to know the other possible States of the life cycle such as: "application started", "closed app"...

    A problem critical of the app without head is memory management, and we can only until BB have a better explanation on the life cycle of the app without a head.

    2. for an application in the short-term, event after 20 years, the app is still listed on memory and CPU usage. That seems abnormal, because I guess that after 20 years, the application will be stopped and not be able to use the memory and CPU more.

    Can someone explain?

    Thank you very much!

    Would you like to take a look at this app, I wrote that has a component without head and uses QLocalSocket to communicate between the headless and the (https://github.com/blackberry/Cascades-Community-Samples/tree/master/wakemebybeacon) user interface process. There is also a blog explaining how it works here: http://devblog.blackberry.com/2014/07/wake-my-beacon/.

    You can detect changes in status of process on the part without head like this (https://github.com/blackberry/Cascades-Community-Samples/blob/master/wakemebybeacon/WakeMeByBeaconSe...) and manipulate them like this (https://github.com/blackberry/Cascades-Community-Samples/blob/master/wakemebybeacon/WakeMeByBeaconSe...).

    When a component without a head (process) is distributed will be passable for 20 seconds, after which it is moved to a queue where it receives no processor, but can be awakened (marked as executable) of certain classes of events. While stopped the headless process always retains a memory footprint, but is not available.

  • Citing the part of the user interface of the game without head in an app without head

    Hello

    I try to call my interface section user app without head of service class (part long term without a head), as shown below:

    application of BB::System:InvokeRequest;

    request.setTarget ("com.myDomain.myAppName");

    request.setAction ("com.myDomain.myAppName.START");

    InvokeTargetReply * response = m_invokeManager-> invoke (request);

    {if (Reply)}

    QObject::connect (response, SIGNAL (finished (()), this, SLOT (onInvokeResult ()));

    _invokeTargetReply = response;

    }

    else {}

    qDebug()< "failed="" to="" start="" invocation:="">

    }

    the error response is always "not objective". I double checked that the id of the target is my id app (user interface section) and that it is registered as target to call in the xml file bar


    application
    myAppName

    Icon.PNG

    myAppName

    I don't know why he keeps giving me the error response target?

    Made a typo, the Notification and NotificationDialog are part of the bb: platform.

    Here are their respective documents:
    Notification https://developer.blackberry.com/native/reference/cascades/bb__platform__notification.html#function-...

    NotificationDialog https://developer.blackberry.com/native/reference/cascades/bb__platform__notificationdialog.html#fun...

  • The App without head - account provider not found - release form is linked to the Blackberry ID

    Hello

    I tried to fill out the app without head permission to

    https://developer.BlackBerry.com/jam/headless/

    It gave me an error "not found the vendor account. Before, visit the provider Portal to create an account or link an existing account on the portal provider with this BlackBerry ID. »

    My account is already linked, and I am able to connect to the provider portal using my blackberry id.

    Please notify

    Worked ok now.

  • App without head

    Hello guys what changes do I need to change in the CPC or hpp files to convert my simple app in app without head
    I have already added

    LIBS += -lbbplatform
    

    in my .pro file and take a permission to Run in backround (_sys_run_headless) & (sys_headless_nonstop) also... bar - descriptor.xml

    I suggest that you either look at the example app without head or just start with that and add your own code.

  • Using C++ in QML classes

    Hello

    I'm trying to run an example of this page (https://developer.blackberry.com/cascades/documentation/dev/integrating_cpp_qml/index.html) on the "Using C++ Classes in QML. I have the following

    code as shown on this page:

    CombineCppAndQml::CombineCppAndQml(bb::cascades::Application *app)
    : QObject(app)
    {
    
        QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
    
        AbstractPane *root = qml->createRootObject();
    
        qmlRegisterType("my.library", 1, 0, "QTimer"); 
    
        app->setScene(root);
    }
    

    and what I have in the QML file:

    // Default empty project template
    import bb.cascades 1.0
    import my.library 1.0 
    
    Page {
        Label {
            id: timerTestLabel
            text: "Hello world"
    
            attachedObjects: [
                QTimer {
                    id: timer
                    interval: 1000
                    onTimeout :{
                        timerTestLabel.text = "Timer triggered"
                    }
                }
            ]
        }
    
        onCreationCompleted: {
            timer.start();
        }
    }
    

    but I get a white screen when I try to run the application. Can someone identify what's not here? Maybe I called:

    qmlRegisterType("my.library", 1, 0, "QTimer")
    

    in a wrong place? Thank you.

    Hello

    Can u please move qmlRegisterType("my.library", 1, 0, 'QTimer"); for the first line of the constructor

    CombineCppAndQml::CombineCppAndQml(bb::cascades::Application *app)
    : QObject(app)
    {
         qmlRegisterType("my.library", 1, 0, "QTimer");
        QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
    
        AbstractPane *root = qml->createRootObject();
    
        app->setScene(root);
    }
    

    _ Dishooom

    Hope this helps

  • Get a Push notification on app without head and application

    Hello

    I have included an app without a head for my current application, because I am handling becomes class PushService when push comes this application without a head. But I pushservice in running my application also to get called when comes to push, and my request for traffic not called when the push... How can I get push notifications in both without head and noraml app.

    You can take a look at the documentation
    https://developer.BlackBerry.com/native/documentation/Cascades/device_platform/headless_apps/

  • Problem with app without head

    I have an app without very simple head with a spare part which can be summed up like this:

    int main()

    {

    While (true)

    {

    appendToLogFile();

    Sleep (5);

    }

    }

    He manages to write twice in the logfile on Simulator 10.3 after the system starts and then it dies (nothing is printed, process went from "pidin").

    Is there something I need to do to ensure that the system does not not kill us after a few seconds?

    I have the following 2 lines in bar - descriptor.xml:

    _sys_run_headless

    _sys_headless_nostop

    I can zip from the project and set up somewhere if anyone wants. It is based on the project template that Momentics puts apps headless.

    TIA.

    I did some experiments. It seems that headless apps work pretty much as advertised during the development of a device but not very well at all in the development on the Simulator.

    Use a device to develop applications without head, not the Simulator.

    Perhaps future simulators will correct the current problems.

  • Problem with conversion of a normal app in app without head

    "I made an example of code where you respond to messages (email, PIN) without user intervention is possible." The application is started and when a new message is received it respond and delete the new message.

    I need the app to start as soon as the phone is started. This is why I want to convert an application without the app. But he is not able to link the API if I set them in the part without the app. The reason is that in the .pro file of the game without head cascades10 should be removed to make headless (it's just one of the requirements). I fully meet all other requirements too for example: no assets etc.

    CONFIG += qt warn_on (cascades10) deleted

    But I must add

    LIBS +=-lbbpim which gives following error.

    /usr/lib/libbbpim.so: reference to 'QSqlDatabase::rollback()' the undefined

    /usr/lib/libbbpim.so: reference to 'QDomDocument::~QDomDocument()' the undefined

    When I add cascades10 then it compiles, but now it does not entirely the requirements of the app without a head.

    If I set the code part user interface of the application without a head, then it can compile and I can run the application. But in this case when I re - turn the phone on or off the UI of the application does not work.

    I do not understand how to convert a normal app in app without a head. I have read the example and followed all the instructions.  http://developer.BlackBerry.com/native/documentation/Cascades/device_platform/headless_apps/

    But I need for email, PIM messages. "How can you do it?

    LIBS +=-lbb - lbbsystem - lbbplatform - lbbdata - lbbpim
    QT += declarative sql
    QT += xml

    He then satisfied and I can run too

  • Trigger awakening for app without head

    Hello

    Is it possible to get headless app be triggered by the event of Awakening (of sleep state)? I want my app works only when I drag it to the top of the screen (action in the service of wake-up call)

    Thank you

    Headless triggers can be found here:
    https://developer.BlackBerry.com/native/documentation/device_platform/headless_apps/triggers.html

    For your usecase, there is, unfortunately, no trigger then you will need to use a long-term application and listen lockState property changes.
    https://developer.BlackBerry.com/native/reference/Cascades/bb__platform__homescreen.html#property-Lo...

  • How to implement the service as thread know app without a head?

    I want to implement some service such as GPS log app, SMS Firewall. I want just an expert to give some guidance on how to design app without head and how to interact without head with front UI thread?

    There is a documentation for it: here.

    Examples of applications: Collector Push and part of Xandroid UI/Xandroid part Headless

    Personally, I could not work from collector to push but the Xandroid works according to others.

    I tried to do a UI + app: separation logic and tried invoking the logical part on the system started but could not make it work too.

    If your application without head needs long running and is not triggered, you must submit a form to the https://developer.blackberry.com/jam/headless/

    I really hope that internal developers to release a simple beginning on the kind of Hello world system early in the example, two examples of applications are too complicated and are trying to squeeze too many different features together

  • Application crash without head

    I have a headless application that consists of a user interface that displays information and a background process that manages the communication networks and raise important data notifications should be retrieved as the user needs to know.

    Looks like what they describe the background process has ended, although I'm waiting to hear if this is indeed the case, and it is not just a bug in my code.

    As I need this service running at all times to manage the network connection is a way to define the process restarts on release without requiring the user interface to get involved or restart the phone?

    You can send a message to hub or NotificationDialog in your app without head destructive code, but chances are that if the app without head has stopped working, it is due to a failure and your Shredder could never be called.

    I know a dev that used a second application without head who would conduct sporadic inspections to see if headless app 1 is running and he would invoke if it no longer exists. This solution is not for everyone, the user will install 2 apps.

    Best solution is to check your code, try to catch the dump if possible user's telephone logs, there is probably an error somewhere that gives the crash without head or your application gets terminated by the operating system when it exceeds the limit of 3 MB heap (check for memory use).

  • Use a custom in a signal qml class

    I want to use a custom in a signal qml class, but have difficulties of implementation that correctly.

    My class is OutgoingInputs

    I give the floor

    qRegisterMetaType("OutgoingInputs");
    

    Save a pointer to it as a type of meta, which seems to be necessary, but when I also use

    Q_DECLARE_METATYPE(OutgoingInputs*)
    

    in the header file for the class, I get a compilation error.

    I have to save it without a pointer (was the idea here ) or is there another obvious error?

    Is there an example how to do this?

    I can receive the signal if my housing uses no parameters.

    I don't think you need to register as a metatype... a simple registry should do as it is the same as the use of the QML object:

    qmlRegisterType("mynamespace" 1.0, "OutgoingInputs");

    found this on the forums of qt:

    http://Qt-project.org/forums/viewthread/9657

    I hope that helps!

  • How to create a shared library of Qt and use it on App without a head?

    Hi all

    I'm experimenting with some waterfalls headless basic application development, and I just hit another problem of blocking.

    I want to create a Qt library with some shared code between the head and user interface elements.

    That's what I did:

    1. created a new application without head the wizard project
    2. created a new library shared by using the wizard project. Adds a simple C++ (Qt not) class
    3. Set up the two parts of the Headless App to use the shared library ("Library in the workspace project" option from the "Add library...) (' Assistant).   Everything compiles and works very well so far.
    4. Now, I want to use the shared library Qt. I choose 'Library of the Standard BlackBerry platform' and ' platform > Qt Core "from the «add library...» "Wizard. Now, I had this error on the shared library project: C:\dev\bbndk\host_10_2_0_15\win32\x86\usr\bin\ntoarm-ld: could not find lQtCore.

    How to create a shared library of Qt and use it on App without a head?

    In fact, I would also use other NDK libraries on library shared as lbbdata and libbbdevice.

    I expect that workers would deal with all the problems for me. As an improvement, I suggest you add the selection screen platform library of the Wizard "Add library...". «the wizard «Shared Library Project»

    There is a model of library project

    https://github.com/BlackBerry/Cascades-community-samples/tree/master/Cascades-library-template

    Unfortunately, the library create Assistant isn't really useful #t

    There is also a great series on using headless headless library and user interface:

    http://devBlog.BlackBerry.com/2014/02/a-flexible-architecture-for-enterprise-mobile-applications-par...

Maybe you are looking for

  • How to order recovery of product for my Satellite M60 - 104?

    Hello I have a portable Satellite M60-104. I want to recovery of product, however, I seem to have lost my product recovery dvd. Is there anyway where I can re - order one for this laptop, or download from internet (if so, where!) Thank you Sunny

  • Drive hard c stuck scanning and repair 100% complete

    My laptop was to start due to a hard drive problem. During the restart, the laptop was apparently scanning and repair itself, but it got stuck at 100%. So I have to stop. This has happened several times, and finally I decided to update the laptop. It

  • Update node continuous formula

    Hello I created a form node, and one of the variables is connected to a DAQ assistant through a "of DDT" that converts the dynamic data to the most recent value. However, I want my node formula continuously update the output if the input of the DAQ a

  • Windows Vista crashes when coming out of sleep mode

    When I get out of mode 'sleep', the computer crashes and I get a message of dump of crash that don't last long enough to play entirely. I have to start the computer in safe mode, and then restart windows vista safe mode. This just started happening i

  • RemoteAccess VPN does not, the client VPNC connects but no connectivity

    Hi all I configured cisco ASA 5520 VPN remote access, Cisco vpn client connects very well and both phases are upcoming but aren't encapsulating packets phase ipsec. and ima could not reach remote subnets 192.168.10.0 and 192.168.180.0 kindly help me