Por que meu aplicativo QQuick falha no Ubuntu?

2

Basicamente eu tenho (A classe Game apenas envolve QGuiApplication):

int Game::run()
{
    QQuickView * mMainView = new QQuickView;
    mMainView->setResizeMode(QQuickView::SizeRootObjectToView);
    mMainView->setSource(QUrl("qrc:///main.qml"));

    mMainView->show();

    return mApp.exec();
}

Principal:

int main(int argc, char ** argv)
{
    Game game(argc, argv);
    return game.run();
}

E o QML:

import QtQuick 2.2

Rectangle {
    width: 256
    height: 256
}

Quando eu compilo e corro, ele cai assim:

#0  strlen () at ../sysdeps/x86_64/strlen.S:106
#1  0x00007ffff6858221 in QCoreApplication::arguments() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007fffed9f9ad3 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
#3  0x00007fffed9f9fbd in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
#4  0x00007fffeda06af2 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
#5  0x00007fffed9f9731 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
#6  0x00007ffff6fb4efe in QWindow::create() () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#7  0x00007ffff6fb57b0 in QWindow::setVisible(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#8  0x000000000041f04c in Game::run (this=this@entry=0x7fffffffd9b0) at /home/xxxxxx/src/game.cpp:71
#9  0x000000000041e44a in main (argc=1, argv=0x7fffffffdc78) at /home/xxxxxx/main.cpp:11

WTF? Eu não posso executar até mesmo um aplicativo QQuick mais simples possível.

    
por user205301 14.12.2014 / 19:56

1 resposta

2

O problema é que a assinatura do construtor QGuiApplication é, na verdade, QGuiApplication(int & argc, char ** argv) ... note que a referência & com argc :)

Eu tinha passado argc por valor, então o aplicativo travou quando a variável argc ficou fora do escopo.

    
por user205301 14.12.2014 / 20:01