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.0Rectangle {
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_OBJECTpublic:
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 -
-
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 :)