Plugin cannot be loaded for module



  • Hi there!

    I created a QML Extension Plugin containing a QWidget (containing the interface down to the hardware API) through a QGraphicsProxyWidget.

    QML file looks like:

    @import QtQuick 1.0
    import "ImagerPlugin" 1.0

    Rectangle {
    width: 640
    height: 480
    ImagerWgt {
    anchors.fill: parent
    }
    }@

    Module is located at
    @./ImagerPlugin/@
    containing:

    • qmlimagerplugin.dll
    • qmldir

    qmldir:

    @plugin qmlimagerplugin@

    qmlImagerPlugin.cpp: (Containing the plugin relevant code)

    @#include <QtDeclarative/QDeclarativeExtensionPlugin>
    #include <QtDeclarative/qdeclarative.h>
    #include <QtGui/QGraphicsProxyWidget>
    #include "WgtImager.h"

    class imagerWgtProxy : public QGraphicsProxyWidget
    {
    Q_OBJECT
    public:
    explicit imagerWgtProxy(QGraphicsItem *parent = 0)
    : QGraphicsProxyWidget(parent)
    {
    imager = new WgtImager();
    imager->initCam();
    setWidget(imager);
    imager->startCam();
    }

    private:
    WgtImager *imager;

    };

    QML_DECLARE_TYPE(imagerWgtProxy);

    class imagerPlugin : public QDeclarativeExtensionPlugin
    {
    Q_OBJECT

    public:
    void registerTypes(const char *uri)
    {
    qmlRegisterType<imagerWgtProxy>(uri, 1, 0, "ImagerWgt");
    }
    };

    #include "qmlImagerPlugin.moc"
    Q_EXPORT_PLUGIN2(qmlimagerplugin,imagerPlugin);@

    Here comes the output of the SerialConsole of my WindowsMobile 6.5 Prof Emulator:

    @CertVerify: Storage CardTestImagerqmlView.exe trust = 2
    CertVerify: QtDeclaratived4.dll trust = 2
    CertVerify: QtScriptd4.dll trust = 2
    CertVerify: QtCored4.dll trust = 2
    CertVerify: msvcr90d.dll trust = 2
    CertVerify: QtSqld4.dll trust = 2
    CertVerify: QtGuid4.dll trust = 2
    CertVerify: QtNetworkd4.dll trust = 2
    CertVerify: Storage CardTestImagerimagerPluginqmlimagerplugin.dll trust = 2
    file:///Storage Card/TestImager/test.qml:2:1: plugin cannot be loaded for module
    "imagerPlugin": Cannot load library /Storage Card/TestImager/imagerPlugin/qmlim
    agerplugin.dll: The specified module could not be found.
    import "imagerPlugin" 1.0
    ^@

    QmlView.exe is just a simple QDeclarativeView
    @#include <QApplication>
    #include <QDeclarativeView>
    #include <QDeclarativeContext>
    #include <QDebug>

    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);
    QDeclarativeView view;
    view.setSource(QUrl::fromLocalFile("test.qml"));
    view.show();
    return app.exec();
    }
    @

    Maybe it's just a wrong naming convention I'm not getting or something...

    Any help would be appreciated ;)

    Thanks
    Ali



  • Hi,

    The error message looks like it is looking for a lowercase "imagerPlugin" (and path), while the code pasted above is using uppercase "ImagerPlugin". Can you verify if they are being used consistently in the code/directory naming?

    Regards,
    Michael



  • Thanks for the answer :)

    Was thinking about that as well... so I already tried around a bit (setting everything lowercase, etc.)
    Until now this didn't get me to a loaded module



  • So... I tried putting the qmldir file into the same directory as the loaded qml-File

    So I was thinking the folder structure has to look like this:
    @
    -Root
    _ qml-Files (importing "ModuleDirectory")
    _ ModuleDirectory
    _ Module-Dlls
    _ qmldir (defining modules in actual directory)
    @

    Now I changed to:
    @
    -Root
    _ qml-Files (imports)
    _ qmldir (defining module in module-directory)
    _ ModuleDirectory
    _ Module-Dlls
    @

    With the new structure the module dll seems to be loaded, but my ImagerWgt isn't recognized
    @ImagerWgt is not a type@

    Can anyone describe the correct folder structure?
    I was thinking, that both ways are possible - first one would've made more sense in my case...

    Thanks
    Ali



  • Hm...

    Well, I think, I made a step forward

    I changed the plugin name from imagerPlugin to QImagerPlugin

    Strangely this seems to make a difference (??)
    But maybe recompile + trial'n'error also play a role ;)

    At the moment the win mobile emulator isn't complaining, but I don't get down to to the hardware yet
    I'll change the plugin from being a qwidget to wich the camera video is streamed directly to something like a qmovie, wich accesses a QIOBlockDevice or something...

    Thanks for the moment :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.