Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

EglFS plugin - undefined symbol: _Z19qt_qgl_paint_enginev



  • Hello,

    I (re)built Qt 5 from git, and I am wondering if the EglFS platform plugin is still functional. Maybe I did something wrong, but recently, I've been getting this warning:
    @
    Old plugin format found in lib /tmp/mnt/UserFS/qt/plugins/platforms/libqeglfs.so
    Qt plugin loader: Compatibility plugin '/tmp/mnt/UserFS/qt/plugins/platforms/lib
    qeglfs.so', need to load for accessing meta data.
    @

    The hellogl_es2, textures, 2dpainting, and practically all other example applications crash quickly after they start, with the same :
    @
    Old plugin format found in lib /tmp/mnt/UserFS/qt/plugins/platforms/libqeglfs.so
    Qt plugin loader: Compatibility plugin '/tmp/mnt/UserFS/qt/plugins/platforms/lib
    qeglfs.so', need to load for accessing meta data.
    Opened display 0x1

    Initialized display 1 4
    [...various application specific messages...]
    This plugin does not support propagateSizeHints()
    [...various application specific messages...]
    ./qtbase/opengl/textures/textures: symbol lookup error: /tmp/mnt/UserFS/qt/plugi
    ns/platforms/libqeglfs.so: undefined symbol: _Z19qt_qgl_paint_enginev
    @

    Surprisingly, the paintedwindow and hellowindow don't crash, the hellowindow even has a moving Qt logo, although I do get a BAD_ACCESS eglError apparently...
    (Talkign about the OpenGL parts, not so much the window decorations or any normal Qt widgets, like buttons, sliders, etc... but I guess that's normal.)

    Ay ideas what I might be doing wrong, or what this might be caused by? I am cross compiling like I've been doing for the past weeks, nothing has changed, really...



  • Upon further investigation, it seems that qt_qgl_paint_engine() is defined in qgl_p.h as:
    @
    extern QPaintEngine* qt_qgl_paint_engine();
    @

    and implemented in qgl.cpp as:
    @
    QPaintEngine* qt_qgl_paint_engine()
    {
    return qt_gl_2_engine()->engine();
    }
    @

    Could I have a missing library? (but in that case, wouldn't the application complain before the undefined symbol error?)

    edit: oops, sorry for the double posting, just saw the edit button, I'll edit future posts!



  • I faced same issue

    I solved it by adding Q_DECL_EXPORT
    @
    Q_DECL_EXPORT QPaintEngine* qt_qgl_paint_engine()
    {
    return qt_gl_2_engine()->engine();
    }
    @
    Looks like developer-build exports all symbols.

    [edit] code wrapping added, koahnig



  • Hi nari01,

    Thank you for your suggestion, that's interesting.

    It seems though, as if the recent EglFS-related patches fixed my problems with it. You might want to try and re-pull qtbase to see if it is fixed for you too.

    Best regards,
    Pierre


Log in to reply